Jak mogę uzyskać listę dostępnych baz danych w wystąpieniu programu SQL Server? Planuję zrobić ich listę w polu kombi w VB.NET.
sql-server
sef
źródło
źródło
exec sp_databases
nie działał. Pozostałe dwa (master.dbo.sysdatabases
isys.databases
) nadal działają.w świetle niejasności co do liczby baz danych niebędących użytkownikami, prawdopodobnie należy dodać:
i dodaj nazwy baz danych usług raportowania
źródło
Aby wykluczyć systemowe bazy danych:
Zaktualizowany o dokładny id_bazy_danych, powinien być większy niż 4, aby pominąć wyświetlanie baz systemowych, które mają identyfikator bazy danych od 1 do 4.
źródło
Działa na naszym SQL Server 2008
źródło
ID
5 i 6 będąReportServer
iReportServerTempDB
jeśli maszSQL Server Reporting Services
zainstalowane.Ponieważ używasz platformy .NET, możesz używać obiektów zarządzania SQL Server
źródło
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
Nie myl się, użyj poniższego prostego zapytania, aby uzyskać wszystkie bazy danych,
Jeśli potrzebujesz tylko baz danych zdefiniowanych przez użytkownika;
Niektóre z nazw Systemowej bazy danych to (zasób, dystrybucja, usługa raportów, usługa raportów), wystarczy wstawić ją do zapytania. Jeśli masz powyższe bazy danych na swoim komputerze jako domyślne.
źródło
Będzie to działać w obu przypadkach, niezależnie od tego, czy raportowanie jest włączone, czy nie
źródło
Korzystam z następującego kodu SQL Server Management Objects, aby uzyskać listę baz danych, które nie są bazami systemowymi i nie są migawkami.
źródło
var DBsLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
lubforeach (var Db in new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases)
jak w .NET 4.0 + SQL Server 2014 lub .SqlServer.Smo \ 12.0.0.0Jeśli chcesz pominąć systemowe bazy danych i tabele ReportServer (jeśli są zainstalowane):
Działa to na Sql Server 2008/2012/2014. Większość zapytań pochodzi z procedury przechowywanej w systemie „ sp_databases ”. Usuwam tylko niepotrzebną kolumnę i dodałem gdzie warunki.
źródło
W SQL Server 7 dbid 1 do 4 to systemowe dbs.
źródło
Nie jestem pewien, czy to pominie bazy danych serwera raportów, ponieważ nie działam, ale z tego, co widziałem, mogę pominąć bazy danych użytkowników systemu za pomocą tego kodu SQL:
źródło
może jestem dodo!
show databases;
pracował dla mnie.źródło
W SQL Server 2008 R2 działa to:
Wymień tylko bazy danych utworzone przez użytkowników.
źródło
owner_sid=1
oznaczasa
właściciela, nic specjalnego.Możesz znaleźć wszystkie nazwy baz danych za pomocą: -
źródło
Aby wykluczyć systemowe bazy danych:
źródło
sid
kolumny nasys.databases
stoleowner_sid