如何通過(guò)擴(kuò)展屬性為SQL Server的索引添加注釋信息
在SQL Server數(shù)據(jù)庫(kù)中,為了方便查看各個(gè)索引的含義,我們也可以為索引添加注釋信息。雖然索引沒(méi)有默認(rèn)的地方讓你加注釋信息,但是我們可以通過(guò)給索引添加擴(kuò)展屬性,來(lái)為索引添加注釋信息。本文我們主要介紹這一過(guò)程的實(shí)現(xiàn)方法,接下來(lái)就讓我們來(lái)一起了解一下吧。
選中一個(gè)索引:屬性,擴(kuò)展屬性,在表格的名稱,值里分別加上:"說(shuō)明", "這個(gè)索引的實(shí)際用處" 即可。
如果一個(gè)索引同時(shí)做了幾件事,可以這樣添加注釋:
(1)插入數(shù)據(jù)時(shí),根據(jù)date+code判斷指定的數(shù)據(jù)是否存在 (2)后臺(tái)根據(jù)date統(tǒng)計(jì)一段時(shí)間的匯總數(shù)據(jù)。
這樣當(dāng)別人不清楚一個(gè)索引的作用時(shí),只要看一下該索引的擴(kuò)展屬性即可。
如果要查看一個(gè)數(shù)據(jù)庫(kù)里的索引注釋列表可以這樣查詢:
- 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'
在開(kāi)發(fā)過(guò)程中,我們一般會(huì)在開(kāi)發(fā)數(shù)據(jù)庫(kù)上,指定各個(gè)索引的注釋,如果要把這兒的注釋同步到生產(chǎn)服務(wù)器,可以通過(guò)腳本來(lái)做:
- EXEC sp_addextendedproperty @level0type=N'SCHEMA', @level0name=N'dbo',
- @level1type=N'TABLE', @level2type=N'INDEX', @level1name=N'表名',
- @level2name=N'索引名', @name=N'說(shuō)明', @value=N'索引的實(shí)際用處'
更新:sp_addextendedproperty
刪除:sp_dropextendedproperty
調(diào)用這兒的 sp_ 存儲(chǔ)過(guò)程可以完成任務(wù),但稍微有點(diǎn)繁瑣,這時(shí)可以自己創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,方便給索引添加注釋信息:
-----------------------------------------------------
-- 給指定表的指定索引設(shè)置擴(kuò)展屬性(默認(rèn)的擴(kuò)展屬性名為:'說(shuō)明'),方便為索引添加注釋
----------------------------------------------------
- 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'說(shuō)明', N'SCHEMA', N'dbo', N'TABLE', @tablename , N'INDEX', @indexname;
- end
---在索引上創(chuàng)建注釋信息
- EXEC sp_addextendedproperty
- @level0type=N'SCHEMA',
- @level0name=N'dbo',
- @level1type=N'TABLE',
- @level2type=N'INDEX',
- @level1name=@tablename,
- @level2name=@indexname,
- @name=N'說(shuō)明',
- @value=@descvalue
- END
調(diào)用時(shí):
exec SetIndexDesc '表名', '索引名', N'注釋信息'
如果需要把開(kāi)發(fā)數(shù)據(jù)庫(kù)的索引注釋列表同步到生產(chǎn)服務(wù)器,可以這樣做:
- 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'說(shuō)明'
把輸出的腳本列表,在生產(chǎn)服務(wù)器上執(zhí)行一下即可。
關(guān)于通過(guò)擴(kuò)展屬性為SQL Server的索引添加注釋信息的知識(shí)就介紹到這里了,希望本次的介紹能夠帶給您一些收獲!
【編輯推薦】


2023-10-19 14:52:27




