sql >> Database teknologi >  >> RDS >> Sqlserver

3 måder at få en liste over databaser i SQL Server (T-SQL)

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.


  1. To skillende Ejendommeligheder

  2. Sådan forhindrer du forbindelsestimeout for store MySQL-importer

  3. Logisk visning af datamodellen i R12.2

  4. Alternativ til at bruge LIMIT søgeord i en underforespørgsel i MYSQL