2012年5月7日 星期一

Transact-SQL 移動資料庫檔案 MDF (Move MDF To New Location)


系統開發者需要將某資料庫實體檔(以下簡稱 MDF)移動至特定目錄時,可利用 sp_attach 及 sp_detach 來完成這項任務。

NOTE 1  以下程式碼旨在協助讀者了解本次所介紹內容。於實際開發時,請務必搭配防護機制,並將相關資料備份後再執行您的程式。


1) 將該資料庫 (假設為 Your_DB) 暫時設定為單一使用者模式 (Single User Mode),避免其他使用者仍連線於此而造成錯誤。
alter database Your_DB set single_user with rollback immediate

2) 找到目標資料庫的 MDF 儲存路徑

select physical_name 
  from master.sys.master_files 
 where name = 'Your_DB'

3) 卸離該資料庫 (Detach)
exec sp_detach_db 'Your_DB', 'True'

4) 將 Your_DB.mdf 複製到其他目錄 (假設目錄為 C:\New_Database_Location\)


5) 連結該資料庫名稱與新的 MDF 路徑 (Attach)
exec sp_attach_db 'Your_DB', 'C:\New_Database_Location\Your_DB.mdf'

6) 將該資料庫設定為多使用者模式 (Multi User Mode)
alter database Your_DB set multi_user