SQL SERVER “扩展属性"的应用


SQL SERVER的数据库对象都有“扩展属性”这种特殊的“属性”(选中某个对象后,在其右键菜单中选择“属性”可以看到),用它可以完成很多功能。
在此,介绍它的两种应用,以起到抛砖引玉的作用,和大家共同学习。

下文中需要用到两个存储过程sp_Addextendedpropertysp_updateextendedproperty,以及一个表值函数fn_listextendedproperty。

应用一:为表和列添加描述信息
create table student
(
 stuId char(4) primary key,
 stuName nvarchar(10)
)
go

EXEC sp_Addextendedproperty
@name='table_desciption', --扩展属性的名称
@value='学生表', --扩展属性的值
@level0type='SCHEMA',--为哪个模式下的哪个表
@level0name='dbo',
@level1type='TABLE',
@level1name='student' 

EXEC sp_Addextendedproperty
@name='column_desciption', --扩展属性的名称
@value='学号', --扩展属性的值
@level0type='SCHEMA',--为哪个模式下的哪个表
@level0name='dbo',
@level1type='TABLE',
@level1name='student',
@level2type='COLUMN',
@level2name='stuId'
go

EXEC sp_Addextendedproperty
@name='column_desciption', --扩展属性的名称
@value='学生姓名', --扩展属性的值
@level0type='SCHEMA',--为哪个模式下的哪个表
@level0name='dbo',
@level1type='TABLE',
@level1name='student',
@level2type='COLUMN',
@level2name='stuName'

 

应用二:对于某些大数据量的操作,要求每隔一段时间执行一次,而每次只对上次执行以后的“新”数据进行操作,对于这种需求,我们可能通过为存储过程设置扩展属性的方式来实现。

create proc p_test
as
begin
 --从扩展属性得到原执行时间
 declare @lastdate datetime
 select @lastdate=cast(value as datetime) from ::fn_listextendedproperty('last_exec_date', 'SCHEMA', 'dbo', 'PROCEDURE','p_test', NULL, NULL)
    --执行SP固有的功能,在代码中应该会用到@lastdate
 -- ...
 --执行完成后,用当前时间为扩展属性赋值
 declare @newdate datetime
 set @newdate=getdate()
 EXEC sp_updateextendedproperty 'last_exec_date', @newdate,'SCHEMA','dbo','PROCEDURE','p_test'
end
GO

--为存储过程添加扩展属性并赋值
declare @newdate datetime
set @newdate=getdate()
EXEC sp_addextendedproperty 'last_exec_date', @newdate,'SCHEMA','dbo','PROCEDURE','p_test'
GO

posted @ 2012-03-15 14:49  男儿当自强IT  阅读(1104)  评论(0编辑  收藏  举报