首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2008 R2 故障恢復:移動資料庫檔案至新位置完整步驟

     編輯:關於SqlServer

適用情境

  • 資料庫處於 SUSPECT (可疑) 或 RECOVERY_PENDING 狀態無法啟動
  • 磁碟故障、空間不足需緊急遷移資料/記錄檔
  • 僅 sysadmin 固定伺服器角色成員可執行

標準作業程序 (SOP)

階段 1:以最小配置模式啟動 SQL Server

-- 停止服務後,命令提示字元執行:
-- 預設實例
NET START MSSQLSERVER /f /T3608

-- 命名實例
NET START MSSQL$InstanceName /f /T3608

參數說明:/f = 最小配置啟動;/T3608 = 略過除 master 以外所有資料庫的啟動/恢復。

階段 2:修改系統目錄中檔案路徑

-- 使用 sqlcmd 或 SSMS 連線執行
ALTER DATABASE YourDatabase
MODIFY FILE (NAME = LogicalName_Data, FILENAME = 'NewPath\Data.mdf');
ALTER DATABASE YourDatabase
MODIFY FILE (NAME = LogicalName_Log,  FILENAME = 'NewPath\Log.ldf');

執行成功會顯示:「檔案 'LogicalName' 已在系統目錄中修改。新路徑將在下次啟動資料庫時生效。」

階段 3:離線移動實體檔案

  1. 結束 sqlcmd / 關閉 SSMS
  2. 停止 SQL Server 服務 (NET STOP MSSQLSERVER)
  3. 以檔案總管或 ROBOCOPY 將 .mdf/.ldf 移動至新路徑
  4. 啟動 SQL Server 服務 (NET START MSSQLSERVER)

階段 4:驗證遷移結果

SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'YourDatabase');

確認 physical_name 已指向新路徑,state_desc 為 ONLINE。

常見坑點與對策

問題原因對策
ALTER DATABASE 執行無誤但啟動失敗實體檔案未移動或路徑拼錯嚴格核對邏輯檔名、實體路徑、權限 (SQL Server 服務帳號需具 NTFS 讀寫權限)
資料庫仍標示 RECOVERY_PENDING記錄檔遺失或版本不匹配若有完整備份,改用 RESTORE WITH MOVE;若無備份則需嘗試重建記錄檔 (風險高)
命名實例服務名稱錯誤服務名稱非 MSSQL$InstanceName用 services.msc 或 SC QUERY 確認確切服務名稱

最佳實務建議

  • 事先規劃資料/記錄檔分離存放於不同磁碟/磁區
  • 定期演練災難恢復流程,驗證備份可用性
  • 生產環境變更前務必擷取系統資料庫 (master, msdb) 備份
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved