【问题标题】:List schema name and owners in sql server 2012列出 sql server 2012 中的架构名称和所有者
【发布时间】:2014-10-04 00:25:44
【问题描述】:

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

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]

【问题讨论】:

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


    【解决方案1】:

    sys.schemas 中的 principal_id 列包含架构所有者的 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
    

    【讨论】:

    • 谢谢。我如何获得表所有者?
    • sys.tables 中使用principal_id 列,这仅在所有者与架构所有者不同的情况下才会填充。
    【解决方案2】:

    这是一个在 SQL Server 下工作的更便携的解决方案:

    SELECT schema_name, schema_owner
    FROM information_schema.schemata
    

    【讨论】:

      猜你喜欢
      • 2014-09-29
      • 2012-12-06
      • 2017-03-10
      • 1970-01-01
      • 2016-12-28
      • 2010-10-26
      • 2014-06-22
      • 2014-02-12
      • 2012-09-22
      相关资源
      最近更新 更多