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

3 modi per ottenere un elenco di database in SQL Server (T-SQL)

Di seguito sono riportati tre modi in cui è possibile utilizzare T-SQL per restituire un elenco di database in SQL Server.

I sp_databases Procedura memorizzata

In SQL Server, il sp_databases stored procedure elenca i database che risiedono in un'istanza di SQL Server o sono accessibili tramite un gateway di database.

Ecco un esempio di esecuzione di questa procedura:

sp_databases;

Esempio di risultato:

+-----------------------+-----------------+-----------+
| 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      |
+-----------------------+-----------------+-----------+

Se l'istruzione non è la prima di un batch, dovrai anteporre il nome della procedura con EXEC o EXECUTE .

Quindi i seguenti tre comandi sono equivalenti:

sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;

Ma il primo può essere utilizzato solo se è la prima istruzione in un batch.

Il sys.databases Visualizza

Il sys.databases view contiene una riga per database nell'istanza di SQL Server.

Ecco un esempio di interrogazione di questa vista:

SELECT name  
FROM sys.databases;

Esempio di risultato:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Questa vista contiene molte colonne e puoi unirla ad altre viste/tabelle, quindi è un'opzione ideale per quando hai bisogno di più informazioni rispetto a sp_databases procedura ritorna.

Il sys.sysdatabases Tabella/Visualizza

Il sys.sysdatabases è l'equivalente di sys.databases .

Quindi potremmo semplicemente scambiare sys.databases nell'esempio sopra a sys.sysdatabases per ottenere lo stesso risultato:

SELECT name  
FROM sys.sysdatabases;

Risultato:

+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Tuttavia, dovresti evitare questa opzione.

Questa tabella di sistema di SQL Server 2000 è inclusa nelle versioni correnti di SQL Server come vista per la compatibilità con le versioni precedenti. Verrà rimosso in una versione futura di Microsoft SQL Server. Microsoft consiglia di evitare di utilizzare questa funzionalità nei nuovi lavori di sviluppo e di pianificare la modifica delle applicazioni che attualmente utilizzano questa funzionalità.

Quindi, se incontri un vecchio script che fa riferimento a sys.sysdatabases , dovresti pensare di cambiarlo in sys.databases .

Server collegati

Se hai bisogno di ottenere un elenco di database da un server collegato, usa sp_catalogs durante il passaggio del nome del server collegato.

Per ulteriori informazioni ed esempi, vedere Elenca tutti i database da un server collegato in SQL Server.