2013-10-30 61 views
3

當前我有一個我希望在當前服務器上移動的數據庫列表。將SQL Server 2008 R2數據庫文件移動到新文件夾位置

DATA:

當前位置:驅動器:\ MSSQL \ DATA \文件夾

新路徑:驅動器:\ MSSQL \ DATA

日誌:

當前位置:驅動器:\ MYSSQL \ LOGS \文件夾

新路徑:驅動器:\ MYSSQL \ LOGS

是否有可用於設置脫機多個數據庫的SQL腳本,將它們拆離並將它們附加到新位置?這也是一個生產環境,是非常大的數據庫(備份和恢復需要更長的時間)。總共需要移動9個數據庫,這是一個簡單的過程,只要位置和用戶具有所需的權限?感謝您的任何幫助。

回答

3

這是一個簡單的過程,你真的不需要分離數據庫要麼做到這一點,你可以做的東西沿着線:

  • 集分貝離線
  • 改變(使用ALTER DATABASE)
  • 物理移動的文件
  • 集分貝在線

的PROC在主數據庫文件的位置ESS下面的文章中描述:

Move User Databases

只要用戶移動文件具有的權限和你正在運行的SQL服務器作爲具有新的文件夾,它是很容易的完全控制的服務帳戶,和我做過很多次的事情。

爲多個數據庫做它也很簡單,一旦你制定了第一個程序。

+0

的原因,我把一些數據庫,是因爲這個特殊的服務器是非常混亂!主服務器當前指向正確的位置,但是我有數據庫恢復到另一個位置,我希望移動到正確的位置!從你說的上面我可以簡單地使用exmaple: 更改數據庫數據庫名稱設置離線 更改數據庫數據庫名稱修改文件..... 更改數據庫數據庫名稱設置在線 – Richard

+0

是的,根本不需要分離,一旦數據庫處於脫機狀態,您可以移動它的文件,只要使用alter database語句告訴SQL服務器放置它們的位置,它們就會重新聯機。 – steoleary

+0

最後一個問題...因爲這是一個生產環境,你沒有提到使用SINGLE_USER WITH ROLLBACK IMMEDIATE? - 這是我第一次在SQL上移動數據庫,我希望這樣做是正確的!當我將數據庫重新聯機時,我可以使用ALTER DATABASE databasename SET MULTI_USER這種正常的做法嗎? – Richard

1

您可以使用此代碼更改路徑。但是你必須手動將文件移動到新的位置。 WITH ROLLBACK IMMEDIATE通過斷開任何當前連接加快脫機過程。

ALTER DATABASE <db-name> SET OFFLINE WITH ROLLBACK IMMEDIATE; 
ALTER DATABASE <db-name> MODIFY FILE (NAME = <db-name>, FILENAME = <db-path\filename.mdf>); 
ALTER DATABASE <db-name> SET ONLINE; 

欲瞭解更多信息檢查相關MSDN article

相關問題