您的位置:首页 > 数据库

批量修改 SQL Server 表、存储过程的所有者

2010-05-28 10:55 495 查看
--批量修改表的所有者:   
  
exec
  
sp_MSforeachtable  
'exec   sp_changeobjectowner  '
'?'
','
'dbo'
'   '
   
--单个修改表所有者:   
  
exec
  
sp_changeobjectowner  
'要改的表名'
,
'dbo'
   
 
 
 
 
--批量修改存储过程的存储过程:
 
 
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
 
 
--执行 exec   ChangeProcOwner   'xx','dbo' 
--或者 exec   ChangeProcOwner   '?','dbo'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sql server 存储 user go