日期:2014-05-16  浏览次数:20402 次

SQL批量添加数据库中所有用户数据表描述

--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