In diesem Artikel werden drei Möglichkeiten vorgestellt, wie Sie schnell feststellen können, wie viele Systemtabellen sich in der aktuellen Datenbank in SQL Server befinden.
Alle drei Optionen verwenden den COUNT()
Funktion beim Abfragen der sys.objects
Systemkatalogansicht. Sie alle führen zu derselben Ausgabe, sodass Sie wirklich nicht über die erste Option hinausgehen müssen. Aber ich werde sie trotzdem auflisten.
Option 1 – Nach Typ
Der einfachste Weg, dies zu tun, ist das Filtern nach type
Spalte.
USE Music; SELECT COUNT(*) AS [Number of System Tables] FROM sys.objects WHERE type = 'S';
Ergebnis:
+---------------------------+ | Number of System Tables | |---------------------------| | 72 | +---------------------------+
Hier filtere ich nach einem type
von S
. Das S
steht für „Systembasistabelle“.
Wenn ich zum Master wechsle Datenbank erhalte ich ein anderes Ergebnis:
USE Master; SELECT COUNT(*) AS [Number of System Tables] FROM sys.objects WHERE type = 'S';
Ergebnis:
+---------------------------+ | Number of System Tables | |---------------------------| | 79 | +---------------------------+
Denn der Master Die Datenbank enthält einige Systemtabellen, die sich nicht in anderen Datenbanken befinden.
Wir können die folgende Abfrage ausführen, um die Namen zu erhalten:
USE master; SELECT name FROM sys.objects WHERE type = 'S' AND name NOT IN ( SELECT name FROM model.sys.objects WHERE type = 'S' );
Ergebnis:
+--------------------------+ | name | |--------------------------| | sysextendedrecoveryforks | | syslogshippers | | sysmatrixageforget | | sysmatrixages | | sysmatrixbricks | | sysmatrixconfig | | sysmatrixmanagers | +--------------------------+
In diesem Fall vergleiche ich den Master Datenbank zum Modell Datenbank. Sie können explizit eine andere Datenbank angeben, indem Sie model
austauschen mit dem Namen der anderen Datenbank.
Option 2 – Nach „Typbeschreibung“
Eine weitere Option ist das Filtern nach type_desc
Spalte anstelle des type
Spalte.
USE Music; SELECT COUNT(*) AS [Number of System Tables] FROM sys.objects WHERE type_desc = 'SYSTEM_TABLE';
Ergebnis:
+---------------------------+ | Number of System Tables | |---------------------------| | 72 | +---------------------------+
Option 3 – Durch OBJECTPROPERTY()
Wenn Sie die beiden vorherigen Optionen aus irgendeinem Grund ungeeignet finden, können Sie es mit OBJECTPROPERTY()
versuchen Funktion.
Diese Funktion akzeptiert zwei Argumente:eine Objekt-ID und eine Eigenschaft. Die Objekt-ID kann die Tabellen-ID sein und die Eigenschaft kann IsSystemTable
sein , die bestimmt, ob das Objekt eine Systemtabelle ist oder nicht.
Daher könnten Sie etwa so vorgehen:
USE Music; SELECT COUNT(*) AS [Number of System Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsSystemTable') = 1;
Ergebnis:
+---------------------------+ | Number of System Tables | |---------------------------| | 72 | +---------------------------+
Listen Sie die Tabellen auf
Sie können die drei Optionen ändern, wenn Sie die Tabellen auflisten möchten, anstatt sie nur zu zählen. Ersetzen Sie dazu einfach COUNT(*) AS [Number of User Tables]
mit *
. Alternativ können Sie die zurückzugebenden Spalten explizit benennen.
Benutzerdefinierte Tabellen zählen
Wenn Sie die Anzahl der Benutzer herausfinden müssen Tabellen finden Sie unter 5 Methoden zum Zählen der Anzahl benutzerdefinierter Tabellen in SQL Server.