TMsConnection.GetTableNames returns names of all tables in the database including the system tables (e.g. sysdiagrams).
How can I figure out what tables are system tables and what are normal tables?
TCustomDAConnection.GetTableNames returns only user tables. sysdiagrams table appears in the list because it is marked as user table. You can make sure of this by executing the following statement: SELECT name, xtype FROM sysobjects WHERE name = 'sysdiagrams'
You are right. Microsoft SQL Server Management Studio shows sysdiagams as a system table.
Evidently this is peculiarity of Management Studio behaviour.