Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

3 maneiras de obter uma lista de bancos de dados no SQL Server (T-SQL)


Abaixo estão três maneiras de usar o T-SQL para retornar uma lista de bancos de dados no SQL Server.

Os sp_databases Procedimento armazenado


No SQL Server, o sp_databases procedimento armazenado lista os bancos de dados que residem em uma instância do SQL Server ou são acessíveis por meio de um gateway de banco de dados.

Aqui está um exemplo de execução deste procedimento:
sp_databases;

Exemplo de resultado:
+-----------------------+-----------------+-----------+
| 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 a instrução não for a primeira em um lote, você precisará prefixar o nome do procedimento com EXEC ou EXECUTE .

Portanto, os três comandos a seguir são equivalentes:
sp_databases;
EXEC sp_databases;
EXECUTE sp_databases;

Mas o primeiro só pode ser usado se for a primeira instrução em um lote.

Os sys.databases Visualizar


Os sys.databases view contém uma linha por banco de dados na instância do SQL Server.

Aqui está um exemplo de consulta a essa visualização:
SELECT name  
FROM sys.databases;

Exemplo de resultado:
+-----------------------+
| name                  |
|-----------------------|
| master                |
| tempdb                |
| model                 |
| msdb                  |
| Music                 |
| KrankyKranes          |
| WideWorldImporters    |
| World                 |
| NarrowNationExporters |
+-----------------------+

Essa visualização contém muitas colunas e você pode juntá-la com outras visualizações/tabelas, por isso é uma opção ideal para quando você precisar de mais informações do que os sp_databases retorno do procedimento.

Os sys.sysdatabases Tabela/Visualização


Os sys.sysdatabases é o equivalente a sys.databases .

Assim, poderíamos simplesmente trocar sys.databases no exemplo acima para sys.sysdatabases para obter o mesmo resultado:
SELECT name  
FROM sys.sysdatabases;

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

No entanto, você deve evitar essa opção.

Esta tabela de sistema do SQL Server 2000 está incluída nas versões atuais do SQL Server como uma exibição para compatibilidade com versões anteriores. Ele será removido em uma versão futura do Microsoft SQL Server. A Microsoft recomenda que evitemos usar esse recurso em novos trabalhos de desenvolvimento e planejamos modificar os aplicativos que atualmente usam esse recurso.

Portanto, se você encontrar um script antigo que faça referência a sys.sysdatabases , você deve pensar em mudar isso para sys.databases .

Servidores Vinculados


Se você precisar obter uma lista de bancos de dados de um servidor vinculado, use sp_catalogs ao passar o nome do servidor vinculado.

Consulte Listar todos os bancos de dados de um servidor vinculado no SQL Server para obter mais informações e exemplos.