• 关于数据库对象的扩展属性


    今天有人问有没有办法查看表的注释,或查询所有表的注释。这里所说的表或表字段等的注释,其实是数据库对象的扩展属性。在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作。扩展属性的内容可以通过SSMS添加、修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护。

    创建一张测试表:

    IF OBJECT_ID(N'T8') IS NOT NULL
    BEGIN
        DROP TABLE T8
    END
    GO
    
    CREATE TABLE T8 (
        id INT NOT NULL,
        name NVARCHAR(100)
    )
    GO

    code-1

    添加表的扩展属性:在Object Explorer中找到新建的表,右键选择属性。

     figure-1

    点击扩展属性,即可进行添加、修改和删除。

     figure-2

    添加字段的扩展属性。

     figure-3

    字段属性——描述,添加注释内容。

     figure-4

    保存后,即可完成对字段扩展属性的添加。可通过系统视图sys.extended_properties进行查询。

    SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties

     code-2

    从下图可看到,刚才在SSMS上添加的属性已经被查询出来。默认的扩展属性名是MS_Description。

     figure-5

    系统视图sys.extended_properties每个字段的详细说明,可查阅SQL联机从书。除了系统视图,也可以通过函数fn_listextendedproperty查询。

    SELECT objtype, objname, name, value
    FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', default, default);
    
    SELECT objtype,objname,name,value
    FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'id');
    
    SELECT objtype,objname,name,value
    FROM fn_listextendedproperty(default, 'SCHEMA', 'dbo', 'TABLE', 'T8', 'COLUMN', 'name');

     code-3

    figure-6

    扩展属性可以使用相关的存储过程进行维护。再执行code-1的代码,重建测试表,相关的属性也会删除。执行存储过程sp_addextendedproperty 进行添加。存储过程的参数使用,请查阅文档,本文末尾提供链接。

    EXEC sp_addextendedproperty 
    @name = N'MS_Description',
    @value = N'This is a table description on [T8](2).',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'T8'
    GO
    
    EXEC sp_addextendedproperty 
    @name = N'MS_Description',
    @value = N'This is a column description on [id](2).',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'T8',
    @level2type = N'COLUMN', @level2name = N'id'
    GO
    
    EXEC sp_addextendedproperty 
    @name = N'MS_Description',
    @value = N'This is a column description on [name](2).',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'T8',
    @level2type = N'COLUMN', @level2name = N'name'
    GO

    code-4

    查询sys.extended_properties,已经成功添加表和字段的扩展属性。

    figure-7

    执行sp_dropextendedproperty删除现有扩展属性。

    EXEC sp_dropextendedproperty 
    @name = N'MS_Description',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'T8',
    @level2type = N'COLUMN', @level2name = N'name'
    GO

    code-5

    再查询sys.extended_properties,字段name的扩展属性已经被删除。

     figure-8

    使用sp_updateextendedproperty更新扩展属性。

    EXEC sp_updateextendedproperty 
    @name = N'MS_Description',
    @value = N'This is a column description on [id](3).',
    @level0type = N'SCHEMA', @level0name = N'dbo',
    @level1type = N'TABLE', @level1name = N'T8',
    @level2type = N'COLUMN', @level2name = N'id'
    GO

    code-6

    figure-9

    不仅表可以添加扩展属性,其他数据库对象也可以,如数据库,索引等。

    USE AdventureWorks2008R2;
    GO
    
    SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties
    GO

    code-7

    figure-10

    figure-11

    参考文档:

    对数据库对象使用扩展属性:

    https://technet.microsoft.com/zh-cn/library/ms190243%28v=sql.105%29.aspx

    查看扩展属性:

    https://technet.microsoft.com/zh-cn/library/ms186989%28v=sql.105%29.aspx

    sys.extended_properties:

    https://technet.microsoft.com/zh-cn/library/ms177541%28v=sql.105%29.aspx

    sp_addextendedproperty:

    https://technet.microsoft.com/zh-cn/library/ms180047%28v=sql.105%29.aspx

    sp_dropextendedproperty:

    https://technet.microsoft.com/zh-cn/library/ms178595%28v=sql.105%29.aspx

    sp_updateextendedproperty:

    https://technet.microsoft.com/zh-cn/library/ms186885%28v=sql.105%29.aspx

    fn_listextendedproperty:

    https://technet.microsoft.com/zh-cn/library/ms179853%28v=sql.105%29.aspx

  • 相关阅读:
    VS2019远程调试
    windows下使用redis-desktop-manager远程连接redis失败问题
    无法打开到SQL Server的连接 (Microsoft SQL Server, 错误:53) .
    由于管理员设置的策略,该磁盘处于脱机状态
    window下ping端口tcping
    dos命令远程登陆window server服务器并重启
    大二寒假作业之Android
    大二寒假作业之Android
    大二寒假作业之Android
    大二寒假作业之JavaWeb
  • 原文地址:https://www.cnblogs.com/fishparadise/p/4743937.html
Copyright © 2020-2023  润新知