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

SQL Server MDF/LDF 檔案還原與修復完整指南:從附加資料庫到重建交易記錄

     編輯:關於SqlServer

前言:兩種備份模式的核心差異

SQL Server 資料庫備份主要有兩種:BACKUP DATABASE 產生 .bak 檔,或直接複製 .mdf (資料檔) 與 .ldf (記錄檔)。本文專注於後者——檔案層級的備份與還原,並涵蓋遺失 LDF 時的進階修復技巧。

情境一:完整擁有 MDF 與 LDF 的標準附加流程

方法 A:企業管理器圖形介面

  1. 右鍵「資料庫」→「所有工作」→「附加資料庫」
  2. 選取目標 .mdf 檔案,系統自動關聯同目錄下的 .ldf,確定即可。

方法 B:T-SQL 指令 sp_attach_db

EXEC sp_attach_db '資料庫名稱', '路徑\檔案.mdf', '路徑\檔案.ldf'

適用於 SQL Server 7.0/2000/2005+,關鍵在於必須同時備份 MDF 與 LDF 兩個檔案。

情境二:僅有 MDF 檔案時的修復實戰(進階)

當只有 MDF(例如從他機複製、LDF 損毀或遺失),直接附加會報錯:「裝置啟動錯誤」或「無法開啟新資料庫」。此時需透過重建交易記錄 強制復原:

步驟詳解

  1. 建立同名空資料庫(企業管理器或 CREATE DATABASE)。
  2. 停止 SQL Server 服務。
  3. 替換檔案:刪除新建的 .ldf,用備份的 .mdf 覆蓋新建的 .mdf。
  4. 啟動服務,資料庫將進入「可疑」狀態。
  5. 允許直接修改系統目錄:
    EXEC sp_configure 'allow updates', 1; RECONFIGURE WITH OVERRIDE;
    
  6. 設為緊急模式:
    UPDATE sysdatabases SET status = -32768 WHERE dbid = DB_ID('目標資料庫');
    
  7. 重建記錄檔(核心步驟):
    DBCC REBUILD_LOG('目標資料庫', '完整路徑\新記錄檔.ldf');
    

    若提示「無法獨佔鎖定」,請關閉所有連線(含企業管理器視窗)後重試。

  8. 驗證一致性(建議執行):DBCC CHECKDB('目標資料庫')
  9. 恢復正常模式:
    EXEC sp_dboption '目標資料庫', 'dbo use only', 'false';
    
  10. 還原系統設定:將 allow updates 改回 0。

關鍵提醒

  • sp_attach_single_file_db 僅適用於正常脫離的單一 MDF,異機移植或異常斷電多半失效。
  • 重建記錄會導致交易一致性遺失,務必事後執行 DBCC CHECKDB 驗證資料完整性。
  • 生產環境請優先採用 BACKUP/RESTORE 機制,檔案複製僅作緊急備援。

結語

掌握 MDF/LDF 檔案層級的還原與修復技巧,能在備份檔遺損、跨機器遷移等棘手情境下挽回資料。但請牢記:完整備份策略才是資料安全的基石,檔案複製僅為補救手段,不可作為常態操作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved