Je souhaite récupérer une liste de tous les schémas d'une base de données Sql Server donnée. En utilisant l'API de récupération de schéma ADO.NET
, j'obtiens une liste de toutes les collections mais il n'y a pas de collection pour 'Schémas'. Je pourrais traverser les collections 'Tables'
, 'Procedures'
(et autres si nécessaire) et obtenir une liste de noms de schémas uniques mais n'y a-t-il pas un moyen plus facile/plus court d'atteindre le même résultat?Comment obtenir une liste de tous les schémas d'une base de données Sql Server
Exemple: Pour la base de données standard 'AdventureWorks'
Je voudrais aussi obtenir la liste suivante - dbo,HumanResources,Person,Production,Purchasing,Sales
(je l'ai omis les autres noms standard SCHEM comme db_accessadmin
, db_datareader
etc)
Edit: Je peux obtenir la liste des schémas en interrogeant la vue système - INFORMATION_SCHEMA.SCHEMATA
mais préférerait utiliser l'API du schéma en premier choix.
J'ai essayé d'utiliser ceci sur un serveur sql 2000, mais je n'ai pas récupéré tous les schémas. Quelqu'un sait pourquoi cela arrive? – evilfish
Je n'ai pas une instance de 2000 pour tester - et je pensais que * I * était un vrai accrochage! Rappelez-vous que 2000 n'a pas de "schémas" réels comme les versions ultérieures, donc ce que vous êtes vraiment en train de répertorier, ce sont les rôles. Essayez simplement 'SELECT * FROM sysusers' et voyez si vous voyez les identifiants que vous recherchez. – harpo
Je l'ai lu et SELECT * FROM INFORMATION_SCHEMA.SCHEMATA n'est pas une bonne idée d'utiliser aussi loin que les sources que j'ai lues. Une méthode bien meilleure consiste à exécuter la procédure stockée de la table principale "sp_databases". Il fonctionne pour 2000 et 2005 (testé à la fois), et dans mon cas retourné le résultat correct à chaque fois. – evilfish