--批量修改数据库对象的所有者
CREATE PROCEDURE dbo.ChangeObjectOwner
@OldOwner as Varchar(40),--对象原所有者
@NewOwner as Varchar(40) --对象新所有者
AS
DECLARE @Name    as Varchar(100) 
DECLARE @OwnerName as varchar(100)
DECLARE curObject CURSOR FOR 
select name from sysobjects where user_name(uid)=@OldOwner order by name
OPEN  curObject
FETCH NEXT FROM curObject INTO @Name
WHILE(@@FETCH_STATUS=0)
BEGIN    
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
FETCH NEXT FROM curObject INTO @Name
END
close curObject
deallocate curObject
GO
以SA登陆查询分析器 ,选中你要的数据库
执行exec ChangeObjectOwner '原所有者','dbo'

解决方案 »

  1.   

    exec sp_changeobjectowner 'product','dbo'
      

  2.   

    --批量修改数据库所有表的所有者
    CREATE PROCEDURE dbo.ChangeObjectOwner
    @OldOwner as Varchar(40),--对象原所有者
    @NewOwner as Varchar(40) --对象新所有者
    AS
    DECLARE @Name    as Varchar(100) 
    DECLARE @OwnerName as varchar(100)
    DECLARE curObject CURSOR FOR 
    select name from sysobjects where user_name(uid)=@OldOwner and xtype='u' order by name
    OPEN  curObject
    FETCH NEXT FROM curObject INTO @Name
    WHILE(@@FETCH_STATUS=0)
    BEGIN    
    set @OwnerName = @OldOwner + '.' + rtrim(@Name)
    exec sp_changeobjectowner @OwnerName, @NewOwner
    FETCH NEXT FROM curObject INTO @Name
    END
    close curObject
    deallocate curObject
    GO
    以SA登陆查询分析器 ,选中你要的数据库
    执行exec ChangeObjectOwner '原所有者','dbo'
      

  3.   

    应该是exec sp_changeobjectowner 'product','abc'
      

  4.   


    应该是exec sp_changeobjectowner 'product','obj'