我正在寻找一种方法来查询视图中返回的表列的“MS_Description”扩展属性值,而不是视图列本身的扩展属性值。
我可以获得视图架构(如何列出 VIEW 中列的源表名称 (SQL Server 2005)),它返回视图中使用的视图列(尽管我只想要返回的列)。
我可以获得扩展属性:从 SQL Server 表中选择扩展属性
但我还没有弄清楚如何将两者结合起来。但首先,是否有一个内置视图或函数可以自动执行此操作?我正在使用 SQL 2014。
或者有人已经写过这个查询吗?
您必须将 ep.[minor_id] = c.[column_id] 添加到 JOIN 子句中,以便仅过滤列(minor_id > 0 并对应于 column_id),而不过滤表(minor_id = 0)。 基本查询:
SELECT
s.[name] AS [Schema]
,o.[name] AS [Table]
,c.[name] AS [Column]
,ep.[value] AS [MS_Description]
FROM sys.schemas s
INNER JOIN sys.objects o
ON o.[schema_id] = s.[schema_id]
INNER JOIN sys.all_columns c
ON o.[object_id] = c.[object_id]
INNER JOIN sys.extended_properties ep
ON ep.[major_id] = o.[object_id]
AND ep.[minor_id] = c.[column_id] -- Extra filter for column values
WHERE o.[type] = 'U'
AND ep.[name] = 'MS_Description'