Como posso obter a lista de bancos de dados disponíveis em uma instância do SQL Server? Estou planejando fazer uma lista deles em uma caixa de combinação no VB.NET.
sql-server
sef
fonte
fonte
exec sp_databases
não funcionou. Os outros dois (master.dbo.sysdatabases
esys.databases
) ainda funcionam.À luz da ambiguidade quanto ao número de bancos de dados não-usuários, você provavelmente deve adicionar:
e adicione os nomes dos bancos de dados do Reporting Services
fonte
Para excluir bancos de dados do sistema:
Atualizado com database_id preciso, deve ser maior que 4, para pular a lista de bancos de dados do sistema que possuem ID de banco de dados entre 1 e 4.
fonte
Funciona em nosso SQL Server 2008
fonte
ID
5 e 6 serãoReportServer
eReportServerTempDB
se você tiverSQL Server Reporting Services
instalado.Como você está usando o .NET, você pode usar os Objetos de Gerenciamento do SQL Server
fonte
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
Não fique confuso, use a consulta simples abaixo para obter todos os bancos de dados,
Se você precisar apenas dos bancos de dados definidos pelo usuário;
Alguns dos nomes de banco de dados do sistema são (recurso, distribuição, serviço de relatórios, reportservicetempdb), basta inseri-lo na consulta. Se você tiver os bancos de dados acima em sua máquina como padrão.
fonte
Isso funcionará para ambas as condições: se o relatório está ativado ou não
fonte
Eu uso o código a seguir do SQL Server Management Objects para obter uma lista de bancos de dados que não são do sistema e não são instantâneos.
fonte
var DBsLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
ouforeach (var Db in new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases)
como no .NET 4.0 + SQL Server 2014 ou .SqlServer.Smo \ 12.0.0.0Se você deseja omitir bancos de dados do sistema e tabelas ReportServer (se instalado):
Isso funciona no Sql Server 2008/2012/2014. A maioria das consultas vem do procedimento armazenado do sistema " sp_databases ". Eu removo apenas a coluna desnecessária e adicionei as condições.
fonte
No SQL Server 7, dbid 1 a 4 são os dbs do sistema.
fonte
Não tenho certeza se isso omitirá os bancos de dados do servidor de relatório, pois não estou executando um, mas pelo que vi, posso omitir bancos de dados de propriedade do usuário do sistema com este SQL:
fonte
talvez eu seja um dodô!
show databases;
trabalhou para mim.fonte
No SQL Server 2008 R2, isso funciona:
E liste apenas bancos de dados criados pelo (s) usuário (s).
fonte
owner_sid=1
significasa
dono, nada de especial nisso.Você pode encontrar todos os nomes de banco de dados com este: -
fonte
Para excluir bancos de dados do sistema:
fonte
sid
coluna nasys.databases
tabelaowner_sid