SQL server 2005 如何批量修改架構(gòu)名(包括表名和存儲(chǔ)過程名) |
SQL Server2005可以使用系統(tǒng)存儲(chǔ)過程sp_changeobjectowner更改數(shù)據(jù)庫對象的所有者。 sp_changeobjectowner 用于更改當(dāng)前數(shù)據(jù)庫中對象的所有者。 sp_changeobjectowner '對象名(包括架構(gòu)名)','新架構(gòu)名'
語法 sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner' 參數(shù) [@objname =] 'object' 當(dāng)前數(shù)據(jù)庫中現(xiàn)有的表、視圖或存儲(chǔ)過程的名稱。object 的數(shù)據(jù)類型為 nvarchar(517),沒有默認(rèn)值。object 可用現(xiàn)有對象所有者限定,格式為 existing_owner.object。 [@newowner =] 'owner' 即將成為對象的新所有者的安全帳戶的名稱。owner 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)值。owner 必須是當(dāng)前數(shù)據(jù)庫中有效的 Microsoft® SQL Server? 用戶或角色或 Microsoft Windows NT® 用戶或組。指定 Windows NT 用戶或組時(shí),請指定 Windows NT 用戶或組在數(shù)據(jù)庫中已知的名稱(用 sp_grantdbaccess 添加)。 返回代碼值 0(成功)或 1(失敗) 注釋 對象所有者(或擁有對象的組或角色的成員)對對象有特殊的權(quán)限。對象所有者可以執(zhí)行任何與對象有關(guān)的 Transact-SQL 語句(例如 INSERT、UPDATE、DELETE、SELECT 或 EXECUTE),也可以管理對象的權(quán)限。 如果擁有對象的安全帳戶必須要除去,但同時(shí)要保留該對象,請使用 sp_changeobjectowner 更改對象所有者。該過程從對象中刪除所有現(xiàn)有權(quán)限。在運(yùn)行 sp_changeobjectowner 之后,需要重新應(yīng)用要保留的任何權(quán)限。 由于這個(gè)原因,建議在運(yùn)行 sp_changeobjectowner 之前,編寫現(xiàn)有權(quán)限的腳本。一旦更改了對象的所有權(quán),可能要使用該腳本重新應(yīng)用權(quán)限。在運(yùn)行該腳本之前需要在權(quán)限腳本中修改對象所有者。有關(guān)編寫數(shù)據(jù)庫腳本的更多信息,請參見編寫數(shù)據(jù)庫文檔和腳本。 批量修改請用: 方法一:使用游標(biāo)
declare @name sysname declare csr1 cursor for select TABLE_NAME from INFORMATION_SCHEMA.TABLES open csr1 FETCH NEXT FROM csr1 INTO @name while (@@FETCH_STATUS=0) BEGIN SET @name='原架構(gòu)名.'+@name EXEC SP_ChangeObjectOwner @name, '新架構(gòu)名' fetch next from csr1 into @name END CLOSE csr1 DEALLOCATE csr1 |