程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL server 2005 如何批量修改架構名(包括表名和存儲過程名)

SQL server 2005 如何批量修改架構名(包括表名和存儲過程名)

編輯:關於SqlServer

SQL Server2005可以使用系統存儲過程sp_changeobjectowner更改數據庫對象的所有者。

sp_changeobjectowner 用於更改當前數據庫中對象的所有者。
sp_changeobjectowner '對象名(包括架構名)','新架構名' 
    
  語法  
  sp_changeobjectowner   [   @objname   =   ]   'object'   ,   [   @newowner   =   ]   'owner'   
  參數  
  [@objname   =]   'object'   
  當前數據庫中現有的表、視圖或存儲過程的名稱。object   的數據類型為   nvarchar(517),沒有默認值。object   可用現有對象所有者限定,格式為   existing_owner.object。   
  [@newowner   =]   'owner'   
  即將成為對象的新所有者的安全帳戶的名稱。owner   的數據類型為   sysname,沒有默認值。owner   必須是當前數據庫中有效的   Microsoft®   SQL   Server™   用戶或角色或   Microsoft   Windows   NT®   用戶或組。指定   Windows   NT   用戶或組時,請指定   Windows   NT   用戶或組在數據庫中已知的名稱(用   sp_grantdbAccess   添加)。   
  返回代碼值  
  0(成功)或   1(失敗)   
  注釋  
  對象所有者(或擁有對象的組或角色的成員)對對象有特殊的權限。對象所有者可以執行任何與對象有關的   Transact-SQL   語句(例如   INSERT、UPDATE、DELETE、SELECT   或   EXECUTE),也可以管理對象的權限。   
  如果擁有對象的安全帳戶必須要除去,但同時要保留該對象,請使用   sp_changeobjectowner   更改對象所有者。該過程從對象中刪除所有現有權限。在運行   sp_changeobjectowner   之後,需要重新應用要保留的任何權限。   
  由於這個原因,建議在運行   sp_changeobjectowner   之前,編寫現有權限的腳本。一旦更改了對象的所有權,可能要使用該腳本重新應用權限。在運行該腳本之前需要在權限腳本中修改對象所有者。有關編寫數據庫腳本的更多信息,請參見編寫數據庫文檔和腳本。   


批量修改請用:

方法一:使用游標

 

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='原架構名.'+@name
EXEC SP_ChangeObjectOwner @name, '新架構名'
fetch next from csr1 into @name
END
CLOSE csr1
DEALLOCATE csr1

方法二:使用系統存儲過程sp_MSforeachtable
EXEC sp_MSforeachtable @command1="EXEC SP_ChangeObjectOwner '?','新架構名'"

如何在SQL 2005中批量修改存儲過程的架構。

執行以下SQL,將執行結果拷貝出來,批量執行既可。

 

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name 
FROM sys.Procedures p INNER JOIN sys.Schemas s on p.schema_id = s.schema_id 
WHERE s.Name = '舊的架構名稱'
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved