列出 sql server 2012 中的架构名称和所有者
Posted
技术标签:
【中文标题】列出 sql server 2012 中的架构名称和所有者【英文标题】:List schema name and owners in 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]
【问题讨论】:
【参考方案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
【讨论】:
以上是关于列出 sql server 2012 中的架构名称和所有者的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL Server 中,如何从子查询中标识的表列名称中检索数据值?