Wie kann ich die Liste der verfügbaren Datenbanken auf einer SQL Server-Instanz abrufen? Ich plane, eine Liste von ihnen in einem Kombinationsfeld in VB.NET zu erstellen.
sql-server
sef
quelle
quelle
exec sp_databases
das nicht funktioniert. Die anderen beiden (master.dbo.sysdatabases
undsys.databases
) funktionieren noch.Angesichts der Unklarheit hinsichtlich der Anzahl der Nichtbenutzerdatenbanken sollten Sie wahrscheinlich hinzufügen:
und fügen Sie die Namen der Reporting Services-Datenbanken hinzu
quelle
So schließen Sie Systemdatenbanken aus:
Mit der genauen Datenbank-ID aktualisiert. Es sollte größer als 4 sein, um die Auflistung von Systemdatenbanken mit einer Datenbank-ID zwischen 1 und 4 zu überspringen.
quelle
Funktioniert auf unserem SQL Server 2008
quelle
ID
5 und 6 werdenReportServer
undReportServerTempDB
wenn SieSQL Server Reporting Services
installiert haben.Da Sie .NET verwenden, können Sie die SQL Server-Verwaltungsobjekte verwenden
quelle
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
Seien Sie nicht verwirrt. Verwenden Sie die folgende einfache Abfrage, um alle Datenbanken abzurufen.
Wenn Sie nur die benutzerdefinierten Datenbanken benötigen;
Einige der Systemdatenbanknamen (Ressource, Verteilung, Berichtsservice, Berichtsservicetempdb) fügen Sie sie einfach in die Abfrage ein. Wenn Sie die oben genannten Datenbanken standardmäßig in Ihrem Computer haben.
quelle
Dies funktioniert für beide Bedingungen, unabhängig davon, ob die Berichterstellung aktiviert ist oder nicht
quelle
Ich verwende den folgenden Code für SQL Server-Verwaltungsobjekte , um eine Liste von Datenbanken abzurufen, die keine Systemdatenbanken und keine Snapshots sind.
quelle
var DBsLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
oderforeach (var Db in new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases)
wie in .NET 4.0 + SQL Server 2014 oder .SqlServer.Smo \ 12.0.0.0Wenn Sie Systemdatenbanken und ReportServer-Tabellen weglassen möchten (falls installiert):
Dies funktioniert auf SQL Server 2008/2012/2014. Der größte Teil der Abfrage stammt aus der gespeicherten Systemprozedur " sp_databases ". Ich entferne nur nicht benötigte Spalten und füge wo Bedingungen hinzu.
quelle
In SQL Server 7 sind dbid 1 bis 4 die System-dbs.
quelle
Ich bin nicht sicher, ob dadurch die Berichtsserver-Datenbanken weggelassen werden, da ich keine ausführe, aber nach dem, was ich gesehen habe, kann ich systembenutzereigene Datenbanken mit dieser SQL weglassen:
quelle
Vielleicht bin ich ein Dodo!
show databases;
arbeitete für mich.quelle
In SQL Server 2008 R2 funktioniert dies:
Und listen Sie nur Datenbanken auf, die von Benutzern erstellt wurden.
quelle
owner_sid=1
bedeutetsa
Besitzer, nichts Besonderes.Sie finden alle Datenbanknamen wie folgt: -
quelle
So schließen Sie Systemdatenbanken aus:
quelle
sid
Spalte auf demsys.databases
Tischowner_sid