更改表的所有者
所有: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 ...