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]
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
Voici une solution plus portable qui fonctionne sous SQL Server:
SELECT schema_name, schema_owner
FROM information_schema.schemata