列出sql server 2012中的模式名称和所有者

时间:2014-08-11 08:26:22

标签: sql-server sql-server-2012 schema

我想在所有数据库中列出所有表名,列名,模式名和所有者,并编写下面的代码。我不知道从何处获取架构所有者详细信息以添加到我的查询中。请帮忙。

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 个答案:

答案 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