Список имен схем и владельцев в 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