¿Cómo puedo obtener la lista de bases de datos disponibles en una instancia de SQL Server? Estoy planeando hacer una lista de ellos en un cuadro combinado en VB.NET.
sql-server
sef
fuente
fuente
exec sp_databases
no funcionó. Los otros dos (master.dbo.sysdatabases
ysys.databases
) todavía funcionan.a la luz de la ambigüedad en cuanto al número de bases de datos que no son usuarios, probablemente debería agregar:
y agregue los nombres de las bases de datos de servicios de informes
fuente
Para excluir las bases de datos del sistema:
Actualizado con database_id preciso, debe ser mayor que 4, para omitir la lista de bases de datos del sistema que tienen un ID de base de datos entre 1 y 4.
fuente
Funciona en nuestro SQL Server 2008
fuente
ID
5 y 6 seránReportServer
yReportServerTempDB
si las tieneSQL Server Reporting Services
instaladas.Como está utilizando .NET, puede usar los objetos de administración de SQL Server
fuente
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
No se confunda, use la consulta simple a continuación para obtener todas las bases de datos,
Si solo necesita las bases de datos definidas por el usuario;
Algunos de los nombres de bases de datos del sistema son (recurso, distribución, servicio de informes, informes, servicio, tmpdb) simplemente insértelo en la consulta. Si tiene los db anteriores en su máquina por defecto.
fuente
Esto funcionará para ambas condiciones, ya sea que los informes estén habilitados o no
fuente
Uso el siguiente código de Objetos de administración de SQL Server para obtener una lista de bases de datos que no son bases de datos del sistema y no son instantáneas.
fuente
var DBsLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
oforeach (var Db in new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases)
como en .NET 4.0 + SQL Server 2014 o .SqlServer.Smo \ 12.0.0.0Si desea omitir las bases de datos del sistema y las tablas de ReportServer (si están instaladas):
Esto funciona en SQL Server 2008/2012/2014. La mayor parte de la consulta proviene del procedimiento almacenado del sistema " sp_databases ". Solo elimino la columna innecesaria y agrego donde las condiciones.
fuente
En SQL Server 7, dbid 1 a 4 son los dbs del sistema.
fuente
No estoy seguro de si esto omitirá las bases de datos del servidor de informes ya que no estoy ejecutando una, pero por lo que he visto, puedo omitir las bases de datos propiedad del usuario del sistema con este SQL:
fuente
tal vez soy un dodo!
show databases;
trabajó para mi.fuente
En SQL Server 2008 R2 esto funciona:
Y enumere solo las bases de datos creadas por los usuarios.
fuente
owner_sid=1
significasa
propietario, no tiene nada de especial.Puede encontrar todos los nombres de bases de datos con esto: -
fuente
Para excluir las bases de datos del sistema:
fuente
sid
columna sobre lasys.databases
mesaowner_sid