Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na uzyskanie listy baz danych w SQL Server (T-SQL)

Poniżej znajdują się trzy sposoby wykorzystania T-SQL do zwrócenia listy baz danych w SQL Server.

Bazy sp_databases Zapisana procedura

W SQL Server, sp_databases procedura składowana zawiera listę baz danych, które rezydują w instancji SQL Server lub są dostępne przez bramę bazy danych.

Oto przykład wykonania tej procedury:

sp_databases;

Przykładowy wynik:

+-----------------------+-----------------+-----------+
| 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      |
+-----------------------+-----------------+-----------+

Jeśli instrukcja nie jest pierwszą w partii, musisz poprzedzić nazwę procedury przedrostkiem EXEC lub EXECUTE .

Tak więc następujące trzy polecenia są równoważne:

sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;

Ale pierwszego z nich można użyć tylko wtedy, gdy jest to pierwsza instrukcja w partii.

Bazy sys.databases Zobacz

sys.databases widok zawiera jeden wiersz na bazę danych w instancji SQL Server.

Oto przykład przeszukiwania tego widoku:

SELECT name  
FROM sys.databases;

Przykładowy wynik:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Ten widok zawiera wiele kolumn i można go łączyć z innymi widokami/tabelami, więc jest to idealna opcja, gdy potrzebujesz więcej informacji niż sp_databases procedura powraca.

Bazy danych sys.sysdatabases Tabela/widok

sys.sysdatabases jest odpowiednikiem sys.databases .

Możemy więc po prostu zamienić sys.databases w powyższym przykładzie do sys.sysdatabases aby uzyskać ten sam wynik:

SELECT name  
FROM sys.sysdatabases;

Wynik:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Należy jednak unikać tej opcji.

Ta tabela systemowa programu SQL Server 2000 jest zawarta w bieżących wydaniach programu SQL Server jako widok zapewniający zgodność z poprzednimi wersjami. Zostanie usunięty w przyszłej wersji Microsoft SQL Server. Firma Microsoft zaleca unikanie korzystania z tej funkcji w nowych pracach programistycznych i planuje modyfikowanie aplikacji, które obecnie korzystają z tej funkcji.

Więc jeśli napotkasz stary skrypt, który odwołuje się do sys.sysdatabases , powinieneś pomyśleć o zmianie tego na sys.databases .

Serwery połączone

Jeśli potrzebujesz uzyskać listę baz danych z połączonego serwera, użyj sp_catalogs podczas przekazywania nazwy połączonego serwera.

Zobacz listę wszystkich baz danych z połączonego serwera w SQL Server, aby uzyskać więcej informacji i przykładów.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieobsługiwane słowo kluczowe:Metadane

  2. Czas zbierania alarmów w chmurze Spotlight

  3. Konwertuj „smalldatetime” na „datetime2” w SQL Server (przykłady T-SQL)

  4. Jak usunąć przy użyciu INNER JOIN w programie SQL Server?

  5. Twórz wartości DISTINCT w STRING_AGG