日期:2014-05-16 浏览次数:20506 次
--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