Abhängig von der Version von SQL Server, die Sie ausführen, kann die Methode zum Abfragen und Zurückgeben einer Liste aller vom Benutzer erstellten Tabellen geringfügig abweichen. Im Folgenden untersuchen wir kurz die TSQL-Anweisungen, die verwendet werden können, um eine Tabellenliste sowohl für den älteren SQL Server 2000 als auch für die neuere Version 2005 oder höher abzurufen.
Auflisten von Tabellen in SQL Server 2000
Für ältere Versionen von SQL Server (z. B. SQL Server 2000, obwohl diese Methode aus Gründen der Abwärtskompatibilität auch in SQL Server 2005 unterstützt wird) müssen Sie SYS.SYSOBJECTS
abfragen Metadatenansicht. SYS.SYSOBJECTS
enthält eine Zeile für jedes Objekt, das in der Datenbank erstellt wurde, einschließlich stored procedures
, views
und user tables
(die wichtig sind, um sie von system tables
zu unterscheiden .)
Die SYSOBJECTS
Die Tabelle enthält ein paar Dutzend Datenspalten, da sie Informationen über praktisch alles enthalten muss, was im Laufe der Zeit zum Server hinzugefügt wurde. Um daher eine Liste von benutzerdefinierten Tabellen zu finden (wobei system tables
ignoriert werden ), müssen wir Ergebnisse finden, bei denen xtype
Spalte (die den object type
angibt für diese Zeile) ist gleich dem Wert U
, was für user table
steht . Die resultierende TSQL-Anweisung sollte folgendermaßen aussehen:
SELECT
*
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Hinweis:Seit SYSOBJECTS
sind Teil des SYS
Namespace, wenn SYSOBJECTS
abgefragt wird Es ist nicht erforderlich, SYSOBJECTS
anzugeben ist Teil des globalen SYS
Namespace, also können wir ihn wie im obigen Beispiel weglassen.
Dies gibt eine Ergebnisliste aller vom Benutzer erstellten Tabellen zurück. Da die Menge an Informationen, die beim Abfragen aller Spalten zurückgegeben wird, ziemlich groß ist, möchten Sie möglicherweise die Ergebnisse kürzen, indem Sie nur den name
anzeigen Spalte und vielleicht das crdate
(Erstellungsdatum):
SELECT
name,
crdate
FROM
SYSOBJECTS
WHERE
xtype = 'U';
GO
Auflisten von Tabellen in SQL Server 2005 oder höher
Um alle Tabellen in SQL Server aufzulisten, wenn Sie eine neuere Version (SQL 2005 oder höher) verwenden, müssen Sie das INFORMATION_SCHEMA
abfragen Ansichten, die automatisch in SQL Server integriert werden. Diese ermöglichen es Ihnen, auf einfache Weise eine Vielzahl von Metadaten für diese bestimmte SQL Server-Instanz anzuzeigen, einschließlich Informationen zu COLUMNS
, ROUTINES
, und sogar TABLES
.
Möglicherweise stellen Sie fest, dass bei Verwendung von INFORMATION_SCHEMA.TABLES
vier Spalten zurückgegeben werden Ansicht, aber die wichtigste Spalte ist TABLE_TYPE
, die bestimmt, ob die Tabelle in dieser Zeile eine tatsächliche Tabelle ist (BASE TABLE
) oder eine Ansicht (VIEW
).
Um alle Tabellen und zurückzugeben Ansichten in einer Abfrage, führen Sie die folgende TSQL-Anweisung aus:
SELECT
*
FROM
INFORMATION_SCHEMA.TABLES;
GO
Es kann auch sinnvoll sein, die Datenbank anzugeben, die Sie abfragen möchten:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES;
GO
Wenn Sie nur tatsächliche Tabellen abrufen und Ansichten aus den Ergebnissen herausfiltern möchten, fügen Sie ein WHERE TABLE_TYPE = 'BASE TABLE'
hinzu Klausel:
SELECT
*
FROM
databaseName.INFORMATION_SCHEMA.TABLES
WHERE
TABLE_TYPE = 'BASE TABLE';
GO