更改数据库所有表的所属用户的存储过程

    技术2022-05-11  18

    CREATE PROCEDURE dbo.ChangeTableOwner

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