sqlserver 編輯、修改字段說明(備注) 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' } 
                        ] 
                ]
        ] 
    ] 

備注

為了指定擴展屬性,SQL Server 數據庫中的對象分為三個級別(0、1 和 2)。級別 0 是最高級別,定義為包含在數據庫作用域中的對象。級別 1 的對象包含在架構作用域或用戶作用域中,而級別 2 的對象包含在級別 1 對象中。可以為這些級別中任一級別的對象定義擴展屬性。

引用某個級別中的對象必須用擁有或包含它們的更高級別對象的名稱進行限制。例如,當將擴展屬性添加到表列(級別 2)時,還必須指定包含該列的表名(級別 1)以及包含該表的架構(級別 0)。

有關對象及其有效的級別 0、1 和 2 類型的完整列表,請參閱對數據庫對象使用擴展屬性。

如果所有對象類型和名稱都為空,則屬性屬於當前數據庫本身。

對於系統對象、用戶定義數據庫的作用域以外的對象或者未在 Arguments 中作為有效輸入列出的對象,不允許使用擴展屬性。

架構與用戶

在 SQL Server 的早期版本中,用戶擁有表、視圖和觸發器之類的數據庫對象。因此,允許將擴展屬性添加到這些對象之一以及將用戶名指定為級別 0 類型。但在 SQL Server 2005 中,數據庫對象包含在架構中。它們獨立於擁有架構的用戶。

在 SQL Server 2005 中,我們建議不要在將擴展屬性應用於數據庫對象時指定 USER 作為級別 0 類型,因為這會導致名稱解析不明確。例如,假定用戶 Mary 擁有兩個架構(Mary 和 MySchema),並且這兩個架構都包含名為 MyTable 的表。如果 Mary 將擴展屬性添加到表 MyTable 並指定 @level0type = N'USER'、@level0name = Mary,則擴展屬性應用於哪個表並不明確。為了保持向后兼容,SQL Server 將屬性應用於名為 Mary 的架構所包含的表。有關用戶與架構的詳細信息,請參閱用戶架構分離。

參數

[ @name ] = { 'property_name' }

要添加的屬性的名稱。property_name 的數據類型為 sysname,不能為 NULL。名稱還可以包括空格或非字母數字字符串以及二進制值。

[ @value = ] { 'value' }

要與屬性關聯的值。value 的數據類型為 sql_variant,默認值為 NULL。value 的大小不能超過 7,500 個字節。

[ @level0type = ] { 'level0_object_type' }

級別 0 對象的類型。level0_object_type 的數據類型為 varchar(128),默認值為 NULL。

有效的輸入包括:ASSEMBLY、CONTRACT、EVENT NOTIFICATION、FILEGROUP、MESSAGE TYPE、PARTITION FUNCTION、PARTITION SCHEME、REMOTE SERVICE BINDING、ROUTE、SCHEMA、SERVICE、USER、TRIGGER、TYPE 和 NULL。

重要事項:
作為級別 0 類型的 USER 和 TYPE 將在 SQL Server 的未來版本中刪除。請避免在新的開發工作中使用這些功能,並考慮修改當前使用這些功能的應用程序。改用 SCHEMA 代替 USER 作為級別 0 類型。對於 TYPE,請使用 SCHEMA 作為級別 0 類型,使用 TYPE 作為級別 1 類型。

 

[ @level0name = ] { 'level0_object_name' }

 

所指定的級別 0 對象類型的名稱。level0_object_name 的數據類型為 sysname,默認值為 NULL。

[ @level1type = ] { 'level1_object_type' }

 

級別 1 對象的類型。level1_object_type 的數據類型為 varchar(128),默認值為 NULL。有效的輸入包括:AGGREGATE、DEFAULT、FUNCTION、LOGICAL FILE NAME、PROCEDURE、QUEUE、RULE、SYNONYM、TABLE、TYPE、VIEW、XML SCHEMA COLLECTION 和 NULL。

[ @level1name = ] { 'level1_object_name' }

 

所指定的級別 1 對象類型的名稱。level1_object_name 的數據類型為 sysname,默認值為 NULL。

   
[ @level2type = ] { 'level2_object_type' }

 

級別 2 對象的類型。level2_object_type 的數據類型為 varchar(128),默認值為 NULL。有效的輸入包括:COLUMN、CONSTRAINT、EVENT NOTIFICATION、INDEX、PARAMETER、TRIGGER 和 NULL。

[ @level2name = ] { 'level2_object_name' }

 

所指定的級別 2 對象類型的名稱。level2_object_name 的數據類型為 sysname,默認值為 NULL。

返回代碼值

0(成功)或 1(失敗)

 

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'0:取消,1:已到,2:未到,3:預訂違約' ,@level0type=N'SCHEMA', @level0name=N'dbo', @level1type=N'TABLE', @level1name=N'Tab_Passenger', @level2type=N'COLUMN', @level2name=N'PassengerState'

-表及字段描述信息處理示例

--創建表
  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

 

 轉載自:http://blog.csdn.net/zanychou/article/details/7403336


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM