日期:2014-05-16 浏览次数:20448 次
--SQL批量添加数据库中所有用户数据表描述
--操作说明:请先准备一数据表为名称为tblist,表名字段tbname nvarchar(255),数据表描述字段chnname nvarchar(255),将所有已存在的数据表和对应描述添加到数据表tblist中
--脚本编写步骤:1、游标读取所有数据表名;2、读取指定数据表描述;3、判断指定数据表描述是否存在,存在则更新,否则就直接添加。
--查询数据表描述脚本:select * from sys.extended_properties where name='MS_Description' and minor_id=0
declare @TableName nvarchar(250) --定义当前操作的数据表名
declare @TableDescription nvarchar(250) --定义当前读取到的数据表描述变量
--声明读取数据库所有数据表名称游标mycursor
declare mycursor cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1
--打开游标
open mycursor
--从游标里取出数据赋值到我们刚才声明的数据表名变量中
fetch next from mycursor into @TableName
--如果游标执行成功
while (@@fetch_status=0)
begin
--获取指定数据表描述
IF EXISTS (select * from tblist WHERE tbname=''+@TableName+'')
begin
--如果指定数据表描述已存在则赋值读取到的描述给变量
select @TableDescription=chnname from tblist WHERE tbname=''+@TableName+''
end
else
begin
--如果指定数据表描述已存在则赋值数据表名给变量
set @TableDescription=@TableName
end
--添加或更新数据表描述
IF EXISTS (select * from sys.extended_properties WHERE name='MS_Description' and major_id=OBJECT_ID(''+@TableName+'') and minor_id=0)
begin
--如果指定数据表描述已存在则直接更新
EXEC sp_updateextendedproperty 'MS_Description',@TableDescription,'user',dbo,'table',@TableName
end
else
begin
--如果指定数据表描述不存在则直接添加
EXECUTE sp_addextendedproperty 'MS_Description',@TableDescription,'user','dbo','table',@TableName
end
print '数据表['+@TableName+']描述['+@TableDescription+']添加成功'
--用游标去取下一条记录
fetch next from mycursor into @TableName
end
--关闭游标
close mycursor
--撤销游标
deallocate mycursor