我想在所有数据库中列出所有表名,列名,模式名和所有者,并编写下面的代码。我不知道从何处获取架构所有者详细信息以添加到我的查询中。请帮忙。
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]
答案 0 :(得分:27)
principal_id
中的sys.schemas
列包含架构所有者的ID,因此要获取名称,您只需使用:
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
答案 1 :(得分:9)
这是一个在SQL Server下运行的更便携的解决方案:
SELECT schema_name, schema_owner
FROM information_schema.schemata