Sqlsever2005更改存储过程所有者为dbo

use dbname 

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 

exec Changename 'cwa1034','dbo' --将cwa1034所有者更改为dbo
查询分析器执行
posted @ 2011-02-25 18:16  专注网站建设和推广  阅读(335)  评论(0)    收藏  举报