zoukankan      html  css  js  c++  java
  • [转]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 
  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/wangshenhe/p/3178039.html
Copyright © 2011-2022 走看看