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.