新聞中心
在我們使用SQL數(shù)據(jù)庫(kù)的過程中,有時(shí)需要用到sql server批量修改,下面就將為您介紹sql server批量修改表和存儲(chǔ)過程的方法,希望對(duì)您學(xué)習(xí)sql server批量修改能有所幫助。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供高昌企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為高昌眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
批量修改表的所有者:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '
單個(gè)修改表所有者:
exec sp_changeobjectowner '要改的表名','dbo'
批量修改存儲(chǔ)過程的存儲(chǔ)過程:
- 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ǔ)過程)有多個(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')
--然后把查詢出來的語(yǔ)句拷貝出來,直接運(yùn)行就表和存儲(chǔ)過程的對(duì)象都會(huì)改過來,但SQL SERVER要先退出來,再進(jìn)去,才能看到更改后的結(jié)果。
新聞標(biāo)題:sqlserver批量修改表和存儲(chǔ)過程的方法
鏈接分享:http://www.5511xx.com/article/cdjosio.html


咨詢
建站咨詢
