服务器 频道

更改数据库中表的所属用户的两个方法

  【IT168 服务器学院】--更改某个表
  exec sp_changeobjectowner ''tablename'',''dbo''

  --存储更改全部表
  CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
   @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
  -- select @name,@NewOwner,@OldOwner

   FETCH NEXT FROM curObject INTO @Name, @Owner
  END

  close curObject
  deallocate curObject

  GO

0
相关文章