Unten sind drei Möglichkeiten, wie wir T-SQL verwenden können, um eine Liste von Datenbanken in SQL Server zurückzugeben.
Die sp_databases Gespeicherte Prozedur
In SQL Server sind die sp_databases Stored Procedure listet die Datenbanken auf, die sich entweder in einer Instanz von SQL Server befinden oder auf die über ein Datenbank-Gateway zugegriffen werden kann.
Hier ist ein Beispiel für die Ausführung dieses Verfahrens:
sp_databases; Beispielergebnis:
+-----------------------+-----------------+-----------+ | DATABASE_NAME | DATABASE_SIZE | REMARKS | |-----------------------+-----------------+-----------| | KrankyKranes | 16384 | NULL | | master | 6848 | NULL | | model | 16384 | NULL | | msdb | 79040 | NULL | | Music | 16384 | NULL | | NarrowNationExporters | 147456 | NULL | | tempdb | 24576 | NULL | | WideWorldImporters | 3575808 | NULL | | World | 81920 | NULL | +-----------------------+-----------------+-----------+
Wenn die Anweisung nicht die erste in einem Stapel ist, müssen Sie dem Prozedurnamen entweder EXEC voranstellen oder EXECUTE .
Die folgenden drei Befehle sind also äquivalent:
sp_databases;
EXEC sp_databases;
EXECUTE sp_databases; Aber die erste kann nur verwendet werden, wenn es die erste Anweisung in einem Batch ist.
Die sys.databases Anzeigen
Die sys.databases view enthält eine Zeile pro Datenbank in der Instanz von SQL Server.
Hier ist ein Beispiel für die Abfrage dieser Ansicht:
SELECT name
FROM sys.databases; Beispielergebnis:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Diese Ansicht enthält viele Spalten und Sie können sie mit anderen Ansichten/Tabellen verbinden, daher ist sie eine ideale Option, wenn Sie mehr Informationen als die sp_databases benötigen Prozedur gibt zurück.
Die sys.sysdatabases Tabelle/Ansicht
Die sys.sysdatabases ist das Äquivalent zu sys.databases .
Wir könnten also einfach sys.databases austauschen im obigen Beispiel zu sys.sysdatabases um das gleiche Ergebnis zu erhalten:
SELECT name
FROM sys.sysdatabases; Ergebnis:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Sie sollten diese Option jedoch vermeiden.
Diese SQL Server 2000-Systemtabelle ist in aktuellen SQL Server-Versionen als Ansicht für Abwärtskompatibilität enthalten. Es wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Microsoft empfiehlt, diese Funktion bei neuen Entwicklungsarbeiten nicht zu verwenden und Anwendungen zu ändern, die diese Funktion derzeit verwenden.
Wenn Sie also auf ein altes Skript stoßen, das auf sys.sysdatabases verweist , sollten Sie darüber nachdenken, dies in sys.databases zu ändern .
Verknüpfte Server
Wenn Sie eine Liste von Datenbanken von einem Verbindungsserver erhalten müssen, verwenden Sie sp_catalogs beim Übergeben des Namens des Verbindungsservers.
Weitere Informationen und Beispiele finden Sie unter Alle Datenbanken von einem verknüpften Server in SQL Server auflisten.