SqlServer修改表的所有者為「dbo」

2022-01-20 18:19:02 字數 1646 閱讀 5442

更改表的所有者

所有:exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''dbo'''

單個:exec   sp_changeobjectowner   'city','user' --city表名

更改表的儲存過程所有者

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 'tickets_f','dbo' --"tickets_f"為原所有者,dbo為新所有者

或者exec changeprocowner '?','tickets_f'

--修改表,檢視,儲存過程 所有者方法

declare tb cursor local for

select 'sp_changeobjectowner ''['+replace(user_name(uid),']',']]')+'].['

+replace(name,']',']]')+']'',''dbo'''

from sysobjects

where xtype in('u','v','p','tr','fn','if','tf') and status>=0

open tb

declare @s nvarchar(4000)

fetch tb into @s

while @@fetch_status=0

begin

exec(@s)

fetch tb into @s

endclose tb

deallocate tb

go

SQLServer修改表所有者

批量修改 exec sp msforeachtable exec sp changeobjectowner dbo 單個修改 exec sp changeobjectowner 要改的表名 dbo 只有所有者才能更改表的所有者 有很伺服器 訊息 15001,級別 16,狀態 1,過程 sp chan...

SQLServer修改表所有者

批量修改 exec sp msforeachtable exec sp changeobjectowner dbo 單個修改 exec sp changeobjectowner 要改的表名 dbo 只有所有者才能更改表的所有者 有很伺服器 訊息 15001,級別 16,狀態 1,過程 sp chan...

SQL SERVER批量 單個修改表的所有者

通過sql query建立的表,所有者就是執行sql query使用者本身。有時候遷移資料庫之後,使用者更改了,標的所有者也需要更改,不然就會出現讀不到資料的情形。如 mytable物件不存在 之類的。下面是修改表所有者的方式 批量修改 exec sp msforeachtable exec sp ...