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.