[轉]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 。有效的輸入是  TABLE VIEW PROCEDURE FUNCTION DEFAULT RULE  和  NULL
 
[ @level1name = ] {  'level1_object_name'  }
 
指定的 1 級對象類型的名稱。level1_object_name 的數據類型爲 sysname,其默認值爲  NULL
 
[ @level2type = ] {  'level2_object_type'  }
 
2 級對象的類型。level2_object_type 的數據類型爲  varchar (128),其默認值爲  NULL 。有效的輸入是  COLUMN 、PARAMETER、 INDEX CONSTRAINT TRIGGER  和  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 '表' NULL NULL
 
--爲字段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 
相關文章
相關標籤/搜索