如何通過擴展屬性為SQL Server的索引添加注釋信息
在SQL Server數據庫中,為了方便查看各個索引的含義,我們也可以為索引添加注釋信息。雖然索引沒有默認的地方讓你加注釋信息,但是我們可以通過給索引添加擴展屬性,來為索引添加注釋信息。本文我們主要介紹這一過程的實現方法,接下來就讓我們來一起了解一下吧。
選中一個索引:屬性,擴展屬性,在表格的名稱,值里分別加上:"說明", "這個索引的實際用處" 即可。
如果一個索引同時做了幾件事,可以這樣添加注釋:
(1)插入數據時,根據date+code判斷指定的數據是否存在 (2)后臺根據date統計一段時間的匯總數據。
這樣當別人不清楚一個索引的作用時,只要看一下該索引的擴展屬性即可。
如果要查看一個數據庫里的索引注釋列表可以這樣查詢:
- select
- object_name(major_id) as table_name,
- (select name from sys.indexes where object_id = major_id and index_id = minor_id) as index_name,
- name,
- value
- from sys.extended_properties
- where class_desc = 'INDEX'
在開發過程中,我們一般會在開發數據庫上,指定各個索引的注釋,如果要把這兒的注釋同步到生產服務器,可以通過腳本來做:
- EXEC sp_addextendedproperty @level0type=N'SCHEMA', @level0name=N'dbo',
- @level1type=N'TABLE', @level2type=N'INDEX', @level1name=N'表名',
- @level2name=N'索引名', @name=N'說明', @value=N'索引的實際用處'
更新:sp_addextendedproperty
刪除:sp_dropextendedproperty
調用這兒的 sp_ 存儲過程可以完成任務,但稍微有點繁瑣,這時可以自己創建一個存儲過程,方便給索引添加注釋信息:
-----------------------------------------------------
-- 給指定表的指定索引設置擴展屬性(默認的擴展屬性名為:'說明'),方便為索引添加注釋
----------------------------------------------------
- ALTER PROCEDURE [dbo].[SetIndexDesc]
- @tablename nvarchar(200),
- @indexname nvarchar(200),
- @descvalue nvarchar(500)
- AS
- BEGIN
---先檢查索引上是否存在注釋信息,如果存在,先刪除
- if exists (
- select * from sys.extended_properties
- where class_desc = 'INDEX' and object_name(major_id) = @tablename
- and (select name from sys.indexes where object_id = major_id and index_id = minor_id) = @indexname
- ) begin
- EXEC sp_dropextendedproperty N'說明', N'SCHEMA', N'dbo', N'TABLE', @tablename , N'INDEX', @indexname;
- end
---在索引上創建注釋信息
- EXEC sp_addextendedproperty
- @level0type=N'SCHEMA',
- @level0name=N'dbo',
- @level1type=N'TABLE',
- @level2type=N'INDEX',
- @level1name=@tablename,
- @level2name=@indexname,
- @name=N'說明',
- @value=@descvalue
- END
調用時:
exec SetIndexDesc '表名', '索引名', N'注釋信息'
如果需要把開發數據庫的索引注釋列表同步到生產服務器,可以這樣做:
- select 'exec SetIndexDesc ''' + object_name(major_id) + ''', '''
- + (select name from sys.indexes where object_id = major_id and index_id = minor_id)
- + ''', N''' + convert(nvarchar(500), value) + ''''
- from sys.extended_properties
- where class_desc = 'INDEX' and name = N'說明'
把輸出的腳本列表,在生產服務器上執行一下即可。
關于通過擴展屬性為SQL Server的索引添加注釋信息的知識就介紹到這里了,希望本次的介紹能夠帶給您一些收獲!
【編輯推薦】