mssql sqlserver 使用sql脚本批量修改存储过程、表、函数、类型等数据库对象的架构信息


摘要:
下文讲述使用sql脚本批量修改表、函数、类型、存储过程的架构信息,如下所示:
实验环境:sql server 2008


由于一些特殊原因,我们需要将历史数据库中所有数据表的架构名有”dbo”变更为指定架构名”***”,下文讲述使用
sp_changeobjectowner系统存储过程修改对象的架构名,例:

    exec sp_changeobjectowner '对象名称','新架构名'

mssql_sqlserver_变更架构名的方法

mssql_sqlserver_变更架构名的方法


—-批量生成变更表所对应的架构名的方法

    /*
批量生成架构名变更脚本
*/
declare @i int 
declare @imax int 
declare @tbName varchar(250)
declare @tableTmp
 table (keyId int identity,
 tbName varchar(250))
 
set @i=0
insert into @tableTmp
(tbName)select name from sysobjects
 where xtype='U' ---批量获取表对象

select @imax=max(keyId) from @tableTmp 

while @i<@imax
begin
    set @i=@i+1
  set @tbName = null
   select @tbName = tbName from @tableTmp where keyId =@i
    
    if @tbName is not null
     begin
      print 'exec sp_changeobjectowner ''' +@tbName+''''+',''newDbo''' 
     end
   
end