sql >> Databasteknik >  >> RDS >> Sqlserver

3 sätt att få en lista över databaser i SQL Server (T-SQL)

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.


  1. Oracle SQL-timmar Skillnad mellan datum i TT:MM:SS

  2. En guide till Pgpool för PostgreSQL:Del två

  3. arbeta med json i oracle

  4. Fråga som ignorerar mellanslagen