sql server批量修改表和存儲(chǔ)過(guò)程的方法
在我們使用SQL數(shù)據(jù)庫(kù)的過(guò)程中,有時(shí)需要用到sql server批量修改,下面就將為您介紹sql server批量修改表和存儲(chǔ)過(guò)程的方法,希望對(duì)您學(xué)習(xí)sql server批量修改能有所幫助。
批量修改表的所有者:
EXEC   sp_MSforeachtable   'exec   sp_changeobjectowner   ''?'',''dbo''   '   
單個(gè)修改表所有者:   
exec   sp_changeobjectowner   '要改的表名','dbo'  
批量修改存儲(chǔ)過(guò)程的存儲(chǔ)過(guò)程:
- CREATE PROCEDURE ChangeProcOwner
 - @OldOwner as NVARCHAR(128),--參數(shù)原所有者
 - @NewOwner as NVARCHAR(128)--參數(shù)新所有者
 - 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
 
執(zhí)行 exec   ChangeProcOwner   'xx','dbo' 
或者
exec   ChangeProcOwner   '?','dbo'
還有一種方法:
--如果一個(gè)數(shù)據(jù)庫(kù)中(表和存儲(chǔ)過(guò)程)有多個(gè)用戶名,而要把它所有都改成dbo 就可以用如下的語(yǔ)句
Select 'sp_changeobjectowner ''' + User_Name(Uid) + '.' + name + ''',''dbo'' ' From sysobjects Where Uid Not in (User_ID('dbo')) And Type In ('U','P')
--然后把查詢出來(lái)的語(yǔ)句拷貝出來(lái),直接運(yùn)行就表和存儲(chǔ)過(guò)程的對(duì)象都會(huì)改過(guò)來(lái),但SQL SERVER要先退出來(lái),再進(jìn)去,才能看到更改后的結(jié)果。
 
【編輯推薦】
上億的sql server表進(jìn)行join的問(wèn)題















 
 
 
 
 
 
 