如何获取所有对象的所有扩展属性的列表

时间:2013-03-05 10:22:28

标签: sql-server

我的任务是创建一个返回以下数据的查询:

[架构名称],[对象名称],[扩展属性名称],[扩展属性值]

任何想法如何实现这一目标?我找到了fn_listextendedproperty函数,但这没有多大帮助。

2 个答案:

答案 0 :(得分:21)

使用特定于列的查询:

SELECT S.name as [Schema Name], O.name AS [Object Name], ep.name, ep.value AS [Extended property]
FROM sys.extended_properties EP
INNER JOIN sys.all_objects O ON ep.major_id = O.object_id 
INNER JOIN sys.schemas S on O.schema_id = S.schema_id
INNER JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id

将此查询用于所有扩展的属性:

SELECT S.name as [Schema Name], O.name AS [Object Name], ep.name, ep.value AS [Extended property]
FROM sys.extended_properties EP
LEFT JOIN sys.all_objects O ON ep.major_id = O.object_id 
LEFT JOIN sys.schemas S on O.schema_id = S.schema_id
LEFT JOIN sys.columns AS c ON ep.major_id = c.object_id AND ep.minor_id = c.column_id

答案 1 :(得分:1)

这将带走特定对象的所有列,以及它们的属性(如果存在)。

SELECT  
    O.name AS [Object Name],
    c.name, 
    ep.value AS [Extended property]
FROM 
    sys.columns AS c INNER JOIN 
    sys.all_objects O ON c.object_id = O.object_id LEFT JOIN 
    sys.extended_properties EP ON ep.major_id = c.object_id AND ep.minor_id = c.column_id   
WHERE
    O.name = 'table-name'