Nedan finns tre sätt vi kan använda T-SQL för att returnera en lista över databaser i SQL Server.
sp_databases
Lagrad procedur
I SQL Server, sp_databases
lagrad procedur listar de databaser som antingen finns i en instans av SQL Server eller är tillgängliga via en databasgateway.
Här är ett exempel på hur den här proceduren utförs:
sp_databases;
Exempelresultat:
+-----------------------+-----------------+-----------+ | 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 | +-----------------------+-----------------+-----------+
Om satsen inte är den första i en batch, måste du prefixa procedurens namn med antingen EXEC
eller EXECUTE
.
Så följande tre kommandon är likvärdiga:
sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;
Men den första kan bara användas om det är den första satsen i en batch.
sys.databases
Visa
sys.databases
vyn innehåller en rad per databas i instansen av SQL Server.
Här är ett exempel på att fråga efter den här vyn:
SELECT name
FROM sys.databases;
Exempelresultat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Den här vyn innehåller många kolumner och du kan slå ihop den med andra vyer/tabeller, så det är ett idealiskt alternativ när du behöver mer information än sp_databases
proceduren returnerar.
sys.sysdatabases
Tabell/vy
sys.sysdatabases
är motsvarigheten till sys.databases
.
Så vi kunde helt enkelt byta sys.databases
i exemplet ovan till sys.sysdatabases
för att få samma resultat:
SELECT name
FROM sys.sysdatabases;
Resultat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Du bör dock undvika det här alternativet.
Denna SQL Server 2000-systemtabell ingår i nuvarande SQL Server-versioner som en vy för bakåtkompatibilitet. Den kommer att tas bort i en framtida version av Microsoft SQL Server. Microsoft rekommenderar att vi undviker att använda den här funktionen i nytt utvecklingsarbete och planerar att modifiera applikationer som för närvarande använder den här funktionen.
Så om du stöter på ett gammalt skript som refererar till sys.sysdatabases
, bör du tänka på att ändra det till sys.databases
.
Länkade servrar
Om du behöver få en lista över databaser från en länkad server, använd sp_catalogs
medan du skickar in namnet på den länkade servern.
Se Lista alla databaser från en länkad server i SQL Server för mer information och exempel.