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

SQL Server 交易記錄檔 (LDF) 遺失/損壞四大恢復情境

     編輯:關於SqlServer

LDF 遺失時,依活動交易有無分兩類處理:

情境一:無活動交易 (Checkpoint 後、長交易無)

  1. 企業管理器 → 全部工作 → **分離資料庫**。
  2. 企業管理器 → 全部工作 → **附加資料庫** → 僅選 MDF → 系統自動建立新 LDF。

情境二:有活動交易 (LDF 含未認可/未檢查點交易)

  1. 建立同名新資料庫 (如 MYDB)。
  2. 停止 SQL Server → 移走新資料庫 MDF。
  3. 啟動 SQL Server → 建立同名資料庫 MYDB (產生新 MDF/LDF)。
  4. 停止 SQL Server → 用原 MDF 覆蓋新 MDF。
  5. 啟動 SQL Server → 資料庫呈「置疑」。
  6. 啟用系統表更新 (SQL 2000):**SQL 2005+ 不支援**,改用 ALTER DATABASE MYDB SET EMERGENCY。
  7. UPDATE sysdatabases SET status = 32768 WHERE name = 'MYDB' (舊版)。
  8. 設單一使用者:sp_dboption 'MYDB', 'single user', 'true'。
  9. DBCC CHECKDB('MYDB') 檢查修復。

現代標準流程 (SQL 2005+)


-- 1. 緊急模式 (僅需 MDF)
ALTER DATABASE SuspectDB SET EMERGENCY;
-- 2. 單一使用者
ALTER DATABASE SuspectDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 3. 修復 (優先無資料遺失)
DBCC CHECKDB('SuspectDB', REPAIR_REBUILD);
-- 4. 若失敗,允許資料遺失 (最後手段)
DBCC CHECKDB('SuspectDB', REPAIR_ALLOW_DATA_LOSS);
-- 5. 恢復多使用者
ALTER DATABASE SuspectDB SET MULTI_USER;

關鍵差異

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目SQL 2000SQL 2005+
系統表直接更新支援 sp_configure 'allow updates'**移除**,改用 ALTER DATABASE
緊急模式UPDATE sysdatabases SET status=-32768ALTER DATABASE ... SET EMERGENCY
重建記錄檔DBCC REBUILD_LOG緊急模式 + CHECKDB 自動重建