ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 更改sqlserver数据库中表的所属用户的方法

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

原创 Linux操作系统 作者:wanglei_qiu 时间:2012-05-08 10:09:45 0 删除 编辑

--更改某个表
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

 

注意:sp_changeobjectowner 会删除对象中的所有现有权限。在运行 sp_changeobjectowner 之后,必须重新应用要保留的任何权限。因此,建议首先编写现有权限的脚本,然后再运行 sp_changeobjectowner。更改了对象的所有权之后,便可使用该脚本重新应用权限。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18995771/viewspace-722969/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-12-14

  • 博文量
    5
  • 访问量
    5646