【问题标题】:SQL Server metadata: How to get description for columns in viewsSQL Server 元数据:如何获取视图中列的描述
【发布时间】:2011-07-05 11:07:33
【问题描述】:

SQL Server 允许存储元数据,例如表及其列的描述。可以从 sys.extended_properties 检索列的描述。还有一种方法可以设置视图的描述(使用属性窗口)。但是没有办法(或者至少我目前不知道)将列的描述放在视图中。

对于特定的开发,我们将描述保存在数据库本身中。这使我们可以将其保存在一个地方并对其进行报告。

我们希望将其扩展以包括视图。

有人可以帮忙吗?

【问题讨论】:

    标签: sql-server metadata database-schema


    【解决方案1】:

    使用 SSMS 2008 可以正常工作。使用对象资源管理器并在视图中选择列的属性。

    它不适用于 SSMS 2005。您将收到异常 Alter failed for Column 'ColumnName'. View columns cannot be modified or created. (Microsoft.SqlServer.Smo)

    但您可以使用 SSMS 2008 将元数据添加到 SQL Server 2005 数据库。

    【讨论】:

    • @Kangkan – 使用 SSMS 2008 它适用于表和视图。对于 SSMS 2005,它适用于表格,但不适用于视图。
    • 很高兴知道这一点。但是要添加列 MS_Description。非常感谢。
    • 另一个想法,我可以从基表中提取视图的描述吗?
    • @Kangkan – 是的,您可以在 sys.extended_properties 找到它们。
    【解决方案2】:

    当然,SQL Server 支持 存储 并根据 columns of a view 检索元数据值,但我认为 Management Studio 不支持它的属性窗口之类的东西。

    您可以使用sp_addextendedproperty及其相关函数来维护描述等,例如:

    EXEC sp_addextendedproperty 
    @name = N'Description', 
    @value = 'Postal Code lorem ipsum...',
    @level0type = N'Schema', @level0name = 'dbo',
    @level1type = N'View',  @level1name = 'MyView',
    @level2type = N'Column', @level2name = 'PostCodeColumn';
    

    【讨论】:

    • 这样,更新所有视图的列将非常困难。我正在寻找的是一种互动的方式。
    【解决方案3】:

    可以有一个旁路解决方案。为每个视图创建一个表,从那里它将与您所做的相同。假设你有一个VIEW_TEMP 的视图,然后写:

    SELECT * INTO TABLE_FOR_VIEW_TEMP FROM VIEW_TEMP
    

    将创建一个表格,您可以使用您的文档。

    【讨论】:

    • 文档不是最终目标。目标是同时维护文档和结构。就此而言,文档也可以保存在 word doc 中,但保持两个不相交是一件痛苦的事情,而且您提出了类似的建议。
    猜你喜欢
    • 2020-12-31
    • 2022-07-09
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 2016-09-02
    • 2010-10-27
    • 1970-01-01
    相关资源
    最近更新 更多