Desidero recuperare un elenco di tutti gli schemi in un determinato database Sql Server. Utilizzo dell'API di recupero dello schema ADO.NET
Ottengo un elenco di tutte le raccolte ma non esiste alcuna raccolta per "Schemi". È possibile attraversare le collezioni 'Tables'
, 'Procedures'
(e altre se necessario) e ottenere un elenco di nomi di schemi univoci, ma non esiste un modo più semplice/più breve per ottenere lo stesso risultato?Come ottenere un elenco di tutti gli schemi in un database Sql Server
Esempio: per la 'AdventureWorks'
database standard Vorrei anche ottenere la seguente lista - dbo,HumanResources,Person,Production,Purchasing,Sales
(ho omesso gli altri nomi SCHEM standard quali db_accessadmin
, db_datareader
ecc)
Edit: posso ottenere la lista degli schemi interrogando la vista di sistema - INFORMATION_SCHEMA.SCHEMATA
ma preferirebbe utilizzare l'API dello schema come prima scelta.
Ho provato ad usarlo su un server sql 2000, ma non ho ottenuto tutti gli schemi restituiti. Qualcuno sa perché questo succede? – evilfish
Non ho un'istanza di 2000 in giro per i test - e pensavo che * I * fosse un vero e proprio attaccante! Ricorda che il 2000 non ha "schemi" reali come le versioni successive, quindi quello che stai veramente elencando sono i ruoli. Prova semplicemente "SELECT * FROM sysusers" e vedi se vedi gli identificatori che stai cercando. – harpo
Ho letto su di esso e il SELECT * FROM INFORMATION_SCHEMA.SCHEMATA non è in realtà una buona idea da utilizzare per quanto riguarda le fonti che ho letto detto. Un metodo molto migliore è eseguire la stored procedure della tabella master "sp_databases". Funziona sia per il 2000 che per il 2005 (testato entrambi) e nel mio caso ha restituito il risultato corretto ogni volta. – evilfish