web-dev-qa-db-fra.com

Lister le nom et les propriétaires du schéma dans SQL Server 2012

Je voulais répertorier tous les noms de table, noms de colonne, noms de schéma et propriétaire dans toutes les bases de données et j'ai écrit le code ci-dessous. Je ne sais pas où obtenir les détails des propriétaires de schéma à ajouter à ma requête. Veuillez aider.

select  c.name as colomn_name , t.name as table_name , s.name as schema_name 
 from sys.columns c 
   inner join  sys.tables t     on c.object_id=t.object_id
   INNER JOIN sys.schemas AS s  ON t.[schema_id] = s.[schema_id]
15
user3844877

La colonne principal_id dans sys.schemas contient l'ID du propriétaire du schéma, donc pour obtenir le nom, vous pouvez simplement utiliser:

USER_NAME(s.principal_id) AS Schema_Owner

Alternativement, si vous souhaitez plus d'informations, vous pouvez vous joindre à sys.sysusers:

SELECT  s.Name, u.*
FROM    sys.schemas s
        INNER JOIN sys.sysusers u
            ON u.uid = s.principal_id
31
GarethD

Voici une solution plus portable qui fonctionne sous SQL Server:

SELECT schema_name, schema_owner
FROM information_schema.schemata
10
Gili