sql server批量修改表和存儲過程的方法
在我們使用SQL數(shù)據(jù)庫的過程中,有時需要用到sql server批量修改,下面就將為您介紹sql server批量修改表和存儲過程的方法,希望對您學習sql server批量修改能有所幫助。
批量修改表的所有者:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
單個修改表所有者:
exec sp_changeobjectowner '要改的表名','dbo'
批量修改存儲過程的存儲過程:
- 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'
還有一種方法:
--如果一個數(shù)據(jù)庫中(表和存儲過程)有多個用戶名,而要把它所有都改成dbo 就可以用如下的語句
Select 'sp_changeobjectowner ''' + User_Name(Uid) + '.' + name + ''',''dbo'' ' From sysobjects Where Uid Not in (User_ID('dbo')) And Type In ('U','P')
--然后把查詢出來的語句拷貝出來,直接運行就表和存儲過程的對象都會改過來,但SQL SERVER要先退出來,再進去,才能看到更改后的結果。
【編輯推薦】