資料庫檔案 (.mdf/.ldf) 在服務運行時被獨佔鎖定,無法直接複製/移動。必須先分離 釋放鎖定,移動檔案後再附加 回服務。
EXEC sp_detach_db 'MyDatabase';
UPDATE STATISTICS,確保統計資訊最新再離線。EXEC sp_attach_db 'MyDatabase',
@filename1 = 'D:\NewLocation\MyDatabase_Data.mdf',
@filename2 = 'D:\NewLocation\MyDatabase_Log.ldf';
EXEC sp_who2 檢查該資料庫 SPID,必要時 KILL 或設定 SINGLE_USER 滾斷連線。sp_detach_db。sp_attach_db 指定新路徑。DBCC CHECKDB、查詢核心業務表、檢查 `sys.master_files` 路徑正確。| 場景 | 建議方法 |
|---|---|
| 同機器磁碟遷移 (停機窗口允許) | sp_detach_db / sp_attach_db (最簡單、統計自動更新) |
| 跨伺服器遷移 (需最小停機) | 備份/還原 (可壓縮、可差異、可鏡像) |
| Always On 可用性群組環境 | 新增次要複本 → 容錯移轉 → 移除舊複本 (零停機) |
| SQL Server 2005+ 線上移動檔案 | ALTER DATABASE ... MODIFY FILE → 離線/上線單一檔案 (無需整庫分離) |