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

SQL Server 非正常刪除 LDF 日誌檔後的緊急恢復:分離 + 單檔附掛

     編輯:關於SqlServer

故障現象

SQL Server 服務停止時,LDF 檔被誤刪。重啟服務後,對應資料庫標記為 **SUSPECT (置疑)** 狀態,無法存取。

適用條件

  • 刪除時資料庫**無活躍交易** (已正常關閉或離線)。
  • 資料檔 (MDF) 完好無損。

恢復步驟 (T-SQL 版,適用 SQL 2000/2005/2008+)

-- 1. 分離置疑資料庫 (強制)
EXEC sp_detach_db 'suspect_db', 'true';

-- 2. 單檔附掛 (僅指定 MDF)
EXEC sp_attach_single_file_db 'suspect_db', 'D:\Data\db_data.mdf';

SQL Server 會自動在預設位置建立 500 KB 新 LDF,資料庫上線。

圖形化操作 (企業管理器 / SSMS)

  1. 右鍵資料庫 → 「工作」→「分離」→ 勾選「更新統計資料」→ 確定。
  2. 檔案系統中確認 LDF 已無 (或已備份移走)。
  3. 右鍵「資料庫」→「附加」→ 「加入」選擇 MDF → 確定。系統提示「找不到日誌檔,是否建立新的?」→ 是。

原理解析

  • sp_detach_db 清除系統目錄中關於該資料庫的中繼資料 (包括舊 LDF 路徑)。
  • sp_attach_single_file_db 僅讀取 MDF 開啟資料庫,發現無日誌檔則**重建新日誌**,等同於 CREATE DATABASE ... FOR ATTACH_REBUILD_LOG (2005+)。
  • 若舊 LDF 含有未提交/未檢查點的交易,重建會失敗並報錯 Error 1813。

風險與預防

風險對策
破壞日誌鏈,無法時間點還原恢復前務必完成**完整備份**;恢復後立即建立新完整備份啟動新鏈
資料不一致 (未提交交易丟失)僅在確認無活躍交易時使用;否則需從備份還原
生產環境誤操作授予 db_owner 權限最小化;啟用資料庫審計追蹤 DDL/DML

結語

「分離 → 刪 LDF → 單檔附掛」是 SQL Server 獨有的**急救絕招**,能在分鐘級恢復因誤刪日誌導致的置疑資料庫。但請銘記:這是**破壞性恢復**,僅作為最後手段,平時務必落實備份策略與檔案權限管控。

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