sql >> Database >  >> RDS >> Sqlserver

3 manieren om een ​​lijst met databases in SQL Server (T-SQL) te krijgen

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.


  1. Hoe maak je een reeks in MySQL

  2. Wat is beter voor uw big data-applicatie, SQL of NoSQL?

  3. Gegroepeerde aaneenschakeling :Duplicaten bestellen en verwijderen

  4. Op pglogische prestaties