修改数据库中表和存储过程的所有者

修改数据库中表和存储过程的所有者

建立下面两个存储过程
在VS2003里运行第一个changename,输入的参数‘原来的用户名’,‘dbo’
再运行第二个存储过程ChangeObjectOwner,输入的参数‘原来的用户名’,‘dbo’

方法二(没试验过)
建立以下两个存储过程
以SA登陆查询分析器 ,选中你要的数据库 
执行存储过程 
执行exec Changename 
' 原所有者 ' , ' dbo '  
执行exec ChangeObjectOwner 
' 原所有者 ' , ' dbo '  
///
if   exists  ( select   *   from  dbo.sysobjects  where  id  =   object_id (N ' [dbo].[changename] ' and   OBJECTPROPERTY (id, N ' IsProcedure ' =   1
drop   procedure   [ dbo ] . [ changename ]  
GO  

SET  QUOTED_IDENTIFIER  OFF  
GO  
SET  ANSI_NULLS  OFF  
GO  

Create   PROCEDURE  dbo.changename 
@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  

FETCH   NEXT   FROM  curObject  INTO   @Name @Owner  
END  

close  curObject 
deallocate  curObject 
GO  
SET  QUOTED_IDENTIFIER  OFF  
GO  
SET  ANSI_NULLS  ON  
GO  

///
CREATE   PROCEDURE  dbo.ChangeObjectOwner 
@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  
FETCH   NEXT   FROM  curObject  INTO   @Name @Owner  
END  
close  curObject 
deallocate  curObject 
GO  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值