• [转]Sql Server 给表与字段添加描述


    /*
    在SQL语句中通过系统存储过sp_addextendedproperty可为表字段添加上动态的说明(备注)下面是SQL SERVER帮助文档中对sp_addextendedproperty存储过程的描述
    语法
    */
    sp_addextendedproperty
        [ @name = ] { 'property_name' }
        [ , [ @value = ] { 'value' }
            [ , [ @level0type = ] { 'level0_object_type' }
             , [ @level0name = ] { 'level0_object_name' }
                [ , [ @level1type = ] { 'level1_object_type' }
                 , [ @level1name = ] { 'level1_object_name' }
                        [ , [ @level2type = ] { 'level2_object_type' }
                         , [ @level2name = ] { 'level2_object_name' }
                        ]
                ]
            ]
        ]
     
    参数
    [ @name = ] { 'property_name' }
     
    要添加的属性名称。property_name 的数据类型为 sysname,它不能是 NULL。名称可能还包括空白或非字母数字字符串和二进制值。
     
    [ @value = ] { 'value' }
     
    将要与属性相关联的值。value 的数据类型为 sql_variant,带有默认设置 NULL。value 的大小不能超过 7,500 字节;否则 SQL Server 会产生错误。
     
    [ @level0type = ] { 'level0_object_type' }
     
    用户或用户定义类型。level0_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 USER、TYPE 和 NULL
     
    [ @level0name = ] { 'level0_object_name' }
     
    指定的 0 级对象类型的名称。level0_object_name 的数据类型为 sysname,其默认值为 NULL
     
    [ @level1type = ] { 'level1_object_type' }
     
    1 级对象的类型。level1_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 TABLEVIEWPROCEDUREFUNCTIONDEFAULTRULE 和 NULL
     
    [ @level1name = ] { 'level1_object_name' }
     
    指定的 1 级对象类型的名称。level1_object_name 的数据类型为 sysname,其默认值为 NULL
     
    [ @level2type = ] { 'level2_object_type' }
     
    2 级对象的类型。level2_object_type 的数据类型为 varchar(128),其默认值为 NULL。有效的输入是 COLUMN、PARAMETER、INDEXCONSTRAINTTRIGGER 和 NULL
     
    [ @level2name = ] { 'level2_object_name' }
     
    指定的 2 级对象类型的名称。level2_object_name 的数据类型为 sysname,其默认值为 NULL
     
    返回代码值
    0(成功)或 1(失败)
     
    注释
    系统对象不允许有扩展属性。
     
    对象是按级别区分的,0 级为最高,2 级为最低。当用户添加、更新或删除扩展属性时,必须指定所有更高级别的对象。例如,如果用户要向 1 级对象添加扩展属性,就必须指定所有 0 级信息。如果用户要向 2 级对象添加扩展属性,则必须提供关于 0 级和 1 级的所有信息。
     
    在每个级别上,对象类型和对象名可唯一地标识对象。如果指定了一个对中的任一方,则必须指定另一方。
     
    给定了有效 property_name 和 value,如果没有任何对象类型和名称,则属性属于当前数据库。如果指定对象类型和名称,则还必须指定父对象和类型。否则,SQL Server 会产生错误。
     
    权限
    db_owner 和 db_ddladmin 固定数据库角色的成员可以将扩展属性添加到任何对象中。用户可以为他们所拥有的对象添加扩展属性。然而,只有 db_owner 可以将属性添加到用户名称中。
    下面是我在使用过程中对表ClipInfo的字段通过sp_addextendedproperty存储过程加的说明,
    ALTER TABLE [dbo].[ClipInfo] ADD CONSTRAINT [PK_CLIPINFO] PRIMARY KEY CLUSTERED ([ClipNum])
    GO
    sp_addextendedproperty N'MS_Description', N'卡号''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'ClipNum'
    GO
    sp_addextendedproperty N'MS_Description', N'密码''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'Passd'
    GO
    sp_addextendedproperty N'MS_Description', N'所属地''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'ClipArea'
    GO
    sp_addextendedproperty N'MS_Description', N'创建时间''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'CreateTime'
    GO
    sp_addextendedproperty N'MS_Description', N'修改时间''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'UpdateTime'
    GO
    sp_addextendedproperty N'MS_Description', N'状态''USER', N'dbo''TABLE', N'ClipInfo''COLUMN', N'ClipState'
    GO
     
    select from sys.extended_properties a
    where a.major_id=object_id('ta')
     
    select from sys.extended_properties
    select from syscolumns where id=object_id('ta')
     
    列出表"t"中所有列的所有扩展属性:
    SELECT   *
    FROM   ::fn_listextendedproperty(NULL,'user','dbo','table','ta','column',default)
    列出表"t"中列col1的描述属性:
    SELECT   value
    FROM   ::fn_listextendedproperty('MS_Description','user','dbo','table','ta','column','id')
    添加表"t"中列col1的描述属性:
    EXEC   sp_addextendedproperty   'MS_Description','列1','user',dbo,'table','t','column',col1
    删除表"t"中列col1的描述属性:
    EXEC   sp_dropextendedproperty   'MS_Description','user',dbo,'table','t','column',col1
    更新表"t"中列col1的描述属性:
    EXEC   sp_updateextendedproperty   'MS_Description','字段1','user',dbo,'table','t','column',col1
     
    --表及字段描述信息处理示例
     
    --创建表
    create table 表(a1 varchar(10),a2 char(2))
     
    --为表添加描述信息
    EXECUTE sp_addextendedproperty N'MS_Description''人员信息表', N'user', N'dbo', N'table', N'表'NULLNULL
     
    --为字段a1添加描述信息
    EXECUTE sp_addextendedproperty N'MS_Description''姓名', N'user', N'dbo', N'table', N'表', N'column', N'a1'
     
    --为字段a2添加描述信息
    EXECUTE sp_addextendedproperty N'MS_Description''性别', N'user', N'dbo', N'table', N'表', N'column', N'a2'
     
    --更新表中列a1的描述属性:
    EXEC sp_updateextendedproperty 'MS_Description','字段1','user',dbo,'table','表','column',a1
     
    --删除表中列a1的描述属性:
    EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','表','column',a1
     
    --删除测试
    drop table 
  • 相关阅读:
    AcWing242一个简单的整数问题1(差分+树状数组)
    AcWing241楼兰图腾(树状数组)
    AcWing802区间和
    离散化
    AcWing1250格子游戏(并查集)
    vijos难解的问题(LIS最长上升子序列)
    动态规划dp——LIS(最长上升子序列)、LCS(最长公共子序列)
    约数、素数、gcd(最大公约数)、lcm(最小公倍数)
    vijos拓扑编号(逆向拓扑排序+优先队列)
    洛谷P1137旅行计划(拓扑排序+简单dp)
  • 原文地址:https://www.cnblogs.com/wangshenhe/p/3178039.html
Copyright © 2020-2023  润新知