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.