Comment obtenir la liste des bases de données disponibles sur une instance SQL Server? Je prévois d'en faire une liste dans une zone de liste déroulante dans VB.NET.
sql-server
sef
la source
la source
exec sp_databases
n'a pas fonctionné. Les deux autres (master.dbo.sysdatabases
etsys.databases
) fonctionnent toujours.à la lumière de l'ambiguïté quant au nombre de bases de données non utilisateurs, vous devez probablement ajouter:
et ajouter les noms des bases de données de Reporting Services
la source
Pour exclure des bases de données système:
Mis à jour avec database_id précis, il doit être supérieur à 4, pour ignorer la liste des bases de données système dont l'ID de base de données est compris entre 1 et 4.
la source
Fonctionne sur notre SQL Server 2008
la source
ID
5 et 6 serontReportServer
etReportServerTempDB
si vous avezSQL Server Reporting Services
installé.Étant donné que vous utilisez .NET, vous pouvez utiliser les objets de gestion SQL Server
la source
var SDBLOC = new Microsoft.SqlServer.Management.Smo.Server("localhost").Databases.Cast<Microsoft.SqlServer.Management.Smo.Database>().Where(bs => !bs.IsSystemObject && bs.ID>6).ToList();
Ne vous trompez pas, utilisez la requête simple ci-dessous pour obtenir toutes les bases de données,
Si vous n'avez besoin que des bases de données définies par l'utilisateur;
Certains des noms de base de données système sont (ressource, distribution, reportservice, reportservicetempdb) il suffit de l'insérer dans la requête. Si vous avez les bases de données ci-dessus dans votre machine par défaut.
la source
Cela fonctionnera pour les deux conditions, que le rapport soit activé ou non
la source
J'utilise le code SQL Server Management Objects suivant pour obtenir une liste de bases de données qui ne sont pas des bases de données système et ne sont pas des instantanés.
la source
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)
comme dans .NET 4.0 + SQL Server 2014 ou .SqlServer.Smo \ 12.0.0.0Si vous souhaitez omettre les bases de données système et les tables ReportServer (si installées):
Cela fonctionne sur Sql Server 2008/2012/2014. La plupart des requêtes proviennent de la procédure stockée système " sp_databases ". Je supprime uniquement la colonne inutile et j'ai ajouté les conditions Where.
la source
Dans SQL Server 7, les dbid 1 à 4 sont les dbs système.
la source
Je ne sais pas si cela omettra les bases de données du serveur de rapports car je n'en exécute pas, mais d'après ce que j'ai vu, je peux omettre les bases de données appartenant aux utilisateurs du système avec ce SQL:
la source
je suis peut-être un dodo!
show databases;
travaillé pour moi.la source
Dans SQL Server 2008 R2, cela fonctionne:
Et répertoriez uniquement les bases de données créées par les utilisateurs.
la source
owner_sid=1
signifiesa
propriétaire, rien de spécial à ce sujet.Vous pouvez trouver tous les noms de base de données avec ceci: -
la source
Pour exclure des bases de données système:
la source
sid
colonne sur lasys.databases
tableowner_sid