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

SQL Server 記錄備份失敗快速排查:復原模式不匹配

     編輯:關於SqlServer

現象

執行 BACKUP LOG 時發生錯誤,常見訊息:

  • Msg 4208, Level 16: The statement BACKUP LOG is not allowed while the recovery model is SIMPLE.
  • Msg 3035, Level 16: Cannot perform a differential backup for database "DBName", because a current database backup does not exist.

根因:資料庫處於簡單復原模式

SELECT name, recovery_model_desc 
FROM sys.databases 
WHERE name = 'YourDBName';
-- 回傳 SIMPLE → 無法執行 BACKUP LOG

解決方案:切換至完整復原模式

ALTER DATABASE YourDBName SET RECOVERY FULL;
-- 立即生效,無需重啟服務

完整操作流程

  1. 確認目前復原模式:SELECT recovery_model_desc FROM sys.databases WHERE name='DBName';
  2. 切換模式:ALTER DATABASE DBName SET RECOVERY FULL;
  3. **立即執行完整備份**建立備份鏈起點:BACKUP DATABASE DBName TO DISK='Path\Full.bak';
  4. 之後即可正常執行 BACKUP LOG DBName TO DISK='Path\Log.trn';
  5. 建立定期記錄備份作業(每 15-60 分鐘)。

重要提醒

  • 模式切換**不會自動建立完整備份**,必須手動執行一次完整備份,否則後續記錄備份仍會報「找不到目前資料庫備份」;
  • 簡單模式下交易記錄會自動截斷(Checkpoint 時),切換至完整模式後記錄開始累積,**務必建立記錄備份排程**,否則記錄檔會無限增長;
  • 大量記錄操作(BULK INSERT、SELECT INTO、CREATE INDEX)在完整模式下會大量寫入記錄,考慮臨時切換 BULK_LOGGED 模式;
  • 鎖定資料庫屬性頁 → 選項 → 復原模式 → 完整,同樣可操作(需立即完整備份)。

企業管理員圖形化操作

  1. 右鍵資料庫 → 內容 → 選項頁;
  2. 復原模式下拉選單選「完整」→ 確定;
  3. 右鍵資料庫 → 所有工作 → 備份資料庫 → 完整備份 → 確定;
  4. 建立維護計畫 → 記錄備份任務 → 排程執行。

結語

**「記錄備份失敗 → 檢查復原模式 → 切換完整模式 → 立即完整備份 → 建立記錄備份排程」** 是標準處理流程。將此納入資料庫建立標準作業程序 (SOP),新建資料庫預設即設為完整模式並配置備份作業,可從源頭避免此類問題。

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