小技巧:更改数据库所有者的对象

TAG: 技巧更改数据库所有者对象

 

  --功能说明:成批更改数据库所有者的对象
  --作者:不详
  --用法:exec ChangeObjectOwner 'nmkspro','dbo'
  --即可将所有nmkspro所有者的对象改为dbo所有
  --运行成功后将提示:"注意: 更改对象名的任一部分都可能破坏脚本和存储过程。"
  CREATE PROCEDURE dbo.ChangeObjectOwner
  @OldOwner as NVARCHAR(128),--参数原所有者
  @NewOwner as NVARCHAR(128)--参数新所有者
  AS
  
  DECLARE @Name  as NVARCHAR(128)
  DECLARE @Owner as NVARCHAR(128)
  DECLARE @OwnerName as NVARCHAR(128)
  
  DECLARE curObject CURSOR FOR
  select 'Name'  = name,
   'Owner'  = user_name(uid)
  from sysobjects
  where user_name(uid)=@OldOwner
  order by name
  
  OPEN curObject
  FETCH NEXT FROM curObject INTO @Name, @Owner
  WHILE(@@FETCH_STATUS=0)
  BEGIN
  if @Owner=@OldOwner
  begin
   set @OwnerName = @OldOwner + '.' + rtrim(@Name)
   exec sp_changeobjectowner @OwnerName, @NewOwner
  end
  
  FETCH NEXT FROM curObject INTO @Name, @Owner
  END
  
  close curObject
  deallocate curObject
  GO




小技巧:更改数据库所有者的对象 相关文章

评论已关闭