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.