在你所需要修改儲存過程的資料庫裡新增如下儲存過程,可以直接在查詢分析器裡執行
if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[changename]') and objectproperty(id, n'isprocedure') = 1)
drop procedure [dbo].[changename]
goset quoted_identifier off
go set ansi_nulls off
gocreate procedure dbo.changename
@oldowner as nvarchar(128),--引數原所有者
@newowner as nvarchar(128)--引數新所有者
asdeclare @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
endfetch next from curobject into @name, @owner
endclose curobject
deallocate curobject
go set quoted_identifier off
go set ansi_nulls on
go執行後,再呼叫此儲存過程來修改
exec changename 'olddbo','dbo' --將olddbo所有者更改為dbo
批量修改儲存過程的所有者
建儲存過程 create procedure changeprocowner oldowner as nvarchar 128 引數原所有者 newowner as nvarchar 128 引數新所有者 as declare name as nvarchar 128 declare owner a...
SQL2000 修改表所有者的方法
單個修改所有者sql語句如下 查詢分析器輸入 exec sp changeobjectowner user.table dbo user.table的意思為 所有者.表名,比如oblog.oblog user,以前的語句表示將table這張表的所有者由 user改成dbo 批量修改所有者語句如下 查...
修改表的所有者
declare tb cursor local for select sp changeobjectowner replace user name uid replace name,dbo from sysobjects where xtype u and status 0 and user nam...