Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

3 Möglichkeiten zum Abrufen einer Liste von Datenbanken in SQL Server (T-SQL)

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.