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.