您的位置:首页 > 数据库

MSSQL中批量修改数据表和存储过程的所有者

2008-09-07 16:58 513 查看
修改数据表的所有者

EXEC sp_changeobjectowner ’原所有者.数据库名’,’新所有者’

批量修改数据表得所有者

EXEC sp_MSforeachtable ’ exec sp_changeobjectowner ’’?’’,’’新所有者’’ ’

修改存储过程的所有者

EXEC sp_changeobjectowner ’原所有者.数据库名’,’新所有者’

批量修改存储过程得所有者

   1、首先创建一个存储过程

    CREATE PROCEDURE ChangeProcOwner

   @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 and xtype=’p’

   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

   2、在查询分析器里执行以下语句

    EXEC ChangeProcOwner ’原所有者’,’新所有者’

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: