Mit der gespeicherten Prozedur sp_msforeachtable
ist es möglich, ein Skript für alle Tabellen in einer Datenbank auszuführen.So überprüfen Sie, ob SQL Server-Tabellen Systemtabellen sind
Allerdings gibt es Systemtabellen, die ich davon ausschließen möchte. Instinktiv würde ich die Eigenschaften IsSystemTable
oder IsMSShipped
überprüfen. Diese funktionieren nicht wie ich erwarte, dass - ich habe zum Beispiel eine Tabelle __RefactorLog
genannt:
Aber wenn ich Frage, ob dies ist ein System oder MS geliefert Tabelle, SQL Server meldet keine meiner Tabellen System Tabellen:
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsSystemTable'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsSystemTable:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
und
exec (N'EXEC Database..sp_msforeachtable "PRINT ''? = '' + CAST(ObjectProperty(Object_ID(''?''), ''IsMSShipped'') AS VARCHAR(MAX))"') AS LOGIN = 'MyETLUser'
-- Results of IsMSShipped:
[dbo].[__RefactorLog] = 0
[schema].[myUserTable] = 0
als ich in die Eigenschaften der Tabelle aussehen (innen SSMS), wird die Tabelle als sy markiert Stammobjekt. Eine Objekteigenschaft wie IsSystemObject
existiert jedoch nicht (AFAIK).
Wie überprüfe ich, ob eine Tabelle ein Systemobjekt ist, abgesehen von der Objekteigenschaft? Wie überprüft SSMS, ob eine Tabelle ein Systemobjekt ist?
Obwohl diese Frage aussieht http://stackoverflow.com/questions/3216219/get-list-of-tables-but-not-include-system-tables-sql-server-2k, ist es nicht doppelt als Die Möglichkeiten zum Überprüfen von Objekteigenschaften haben sich seit SQL Server 2000 geändert und ich frage, wie SSMS es überprüft. – vstrien
Sie können den SQL Server-Profiler immer auf Ihrem Server ausführen, wenn Sie den Ordner "System Tables" öffnen und sehen, welche SQL-Datei ausgeführt wird. –