SQL儲存過程的所有者修改方法

2022-08-19 23:03:14 字數 1264 閱讀 5538

在你所需要修改儲存過程的資料庫裡新增如下儲存過程,可以直接在查詢分析器裡執行

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...