如何从底层源表查询视图列的扩展属性?

问题描述 投票:0回答:1

我正在寻找一种方法来查询视图中返回的表列的“MS_Description”扩展属性值,而不是视图列本身的扩展属性值。

我可以获得视图架构(如何列出 VIEW 中列的源表名称 (SQL Server 2005)),它返回视图中使用的视图列(尽管我只想要返回的列)。

我可以获得扩展属性:从 SQL Server 表中选择扩展属性

但我还没有弄清楚如何将两者结合起来。但首先,是否有一个内置视图或函数可以自动执行此操作?我正在使用 SQL 2014。

或者有人已经写过这个查询吗?

http://www.sqlfiddle.com/#!6/e3abc/1

sql-server information-schema extended-properties
1个回答
0
投票

您必须将 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'
© www.soinside.com 2019 - 2024. All rights reserved.