Nedenfor er tre måder, hvorpå vi kan bruge T-SQL til at returnere en liste over databaser i SQL Server.
sp_databases
Lagret procedure
I SQL Server er sp_databases
lagret procedure viser de databaser, der enten findes i en forekomst af SQL Serveren eller er tilgængelige via en databasegateway.
Her er et eksempel på udførelse af denne procedure:
sp_databases;
Eksempelresultat:
+-----------------------+-----------------+-----------+ | 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 | +-----------------------+-----------------+-----------+
Hvis sætningen ikke er den første i en batch, skal du præfikse procedurenavnet med enten EXEC
eller EXECUTE
.
Så de følgende tre kommandoer er ækvivalente:
sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;
Men den første kan kun bruges, hvis det er den første sætning i en batch.
sys.databases
Vis
sys.databases
visningen indeholder en række pr. database i forekomsten af SQL Server.
Her er et eksempel på forespørgsler i denne visning:
SELECT name
FROM sys.databases;
Eksempelresultat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Denne visning indeholder en masse kolonner, og du kan forbinde den med andre visninger/tabeller, så den er en ideel mulighed, når du har brug for mere information end sp_databases
procedure returnerer.
sys.sysdatabases
Tabel/visning
sys.sysdatabases
svarer til sys.databases
.
Så vi kunne simpelthen bytte sys.databases
i eksemplet ovenfor til sys.sysdatabases
for at få det samme resultat:
SELECT name
FROM sys.sysdatabases;
Resultat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Du bør dog undgå denne mulighed.
Denne SQL Server 2000-systemtabel er inkluderet i aktuelle SQL Server-udgivelser som en visning for bagudkompatibilitet. Det vil blive fjernet i en fremtidig version af Microsoft SQL Server. Microsoft anbefaler, at vi undgår at bruge denne funktion i nyt udviklingsarbejde og planlægger at ændre applikationer, der i øjeblikket bruger denne funktion.
Så hvis du støder på et gammelt script, der refererer til sys.sysdatabases
, bør du overveje at ændre det til sys.databases
.
Linkede servere
Hvis du har brug for at få en liste over databaser fra en linket server, skal du bruge sp_catalogs
mens du sender navnet på den sammenkædede server.
Se Liste over alle databaser fra en sammenkædet server i SQL Server for mere information og eksempler.