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.