Hieronder staan drie manieren waarop we T-SQL kunnen gebruiken om een lijst met databases in SQL Server te retourneren.
De sp_databases
Opgeslagen procedure
In SQL Server zijn de sp_databases
opgeslagen procedure geeft een overzicht van de databases die zich ofwel in een exemplaar van de SQL Server bevinden of die toegankelijk zijn via een databasegateway.
Hier is een voorbeeld van het uitvoeren van deze procedure:
sp_databases;
Voorbeeld resultaat:
+-----------------------+-----------------+-----------+ | 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 | +-----------------------+-----------------+-----------+
Als de instructie niet de eerste in een batch is, moet u de procedurenaam vooraf laten gaan door EXEC
of EXECUTE
.
Dus de volgende drie commando's zijn equivalent:
sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;
Maar de eerste kan alleen worden gebruikt als het de eerste instructie in een batch is.
De sys.databases
Bekijk
De sys.databases
view bevat één rij per database in het exemplaar van SQL Server.
Hier is een voorbeeld van het opvragen van deze weergave:
SELECT name
FROM sys.databases;
Voorbeeld resultaat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
Deze weergave bevat veel kolommen en u kunt deze samenvoegen met andere weergaven/tabellen, dus het is een ideale optie als u meer informatie nodig heeft dan de sp_databases
procedure keert terug.
De sys.sysdatabases
Tabel/weergave
De sys.sysdatabases
is het equivalent van sys.databases
.
We kunnen dus eenvoudig sys.databases
omwisselen in het bovenstaande voorbeeld naar sys.sysdatabases
om hetzelfde resultaat te krijgen:
SELECT name
FROM sys.sysdatabases;
Resultaat:
+-----------------------+ | name | |-----------------------| | master | | tempdb | | model | | msdb | | Music | | KrankyKranes | | WideWorldImporters | | World | | NarrowNationExporters | +-----------------------+
U moet deze optie echter vermijden.
Deze SQL Server 2000-systeemtabel is opgenomen in de huidige SQL Server-releases als een weergave voor achterwaartse compatibiliteit. Het wordt verwijderd in een toekomstige versie van Microsoft SQL Server. Microsoft raadt aan om deze functie niet te gebruiken bij nieuw ontwikkelingswerk en om toepassingen aan te passen die deze functie momenteel gebruiken.
Dus als je een oud script tegenkomt dat verwijst naar sys.sysdatabases
, zou u moeten overwegen om dat te veranderen in sys.databases
.
Gelinkte servers
Als u een lijst met databases van een gekoppelde server nodig heeft, gebruikt u sp_catalogs
terwijl de naam van de gekoppelde server wordt doorgegeven.
Zie Lijst met alle databases van een gekoppelde server in SQL Server voor meer informatie en voorbeelden.