Список имен схем и владельцев в sql server 2012

Я хотел перечислить все имена таблиц , имена столбцов, имена схем и владельца во всех базах данных и написал код ниже . Я не уверен, где получить сведения о владельцах схемы для добавления в мой запрос . Пожалуйста помочь.

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]

2 ответов


столбец principal_id на sys.schemas содержит идентификатор владельца схемы, поэтому для получения имени вы можете просто использовать:

USER_NAME(s.principal_id) AS Schema_Owner

кроме того, если вам нужна дополнительная информация, вы можете присоединиться к sys.sysusers:

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

вот более портативное решение, которое работает под SQL Server:

SELECT schema_name, schema_owner
FROM information_schema.schemata