備份事務日誌時遇到 log corruption

故障描述:

備份事務日誌時遇到以下錯誤

Backup detected log corruption in database FakeDBName. Context is FirstSector. LogFile: 2 ‘F:\SQLLOGS\XYZ\FakeDBName_Log.ldf’ VLF SeqNo: x502e VLFBase: x2ce40000 LogBlockOffset: x2d0a9000 SectorStatus: 2 LogBlock.StartLsn.SeqNo: x4ee3 LogBlock.StartLsn.Blk: x1348 Size: x200 PrevSize: x400
2009-03-06 10:00:02.61 Backup      Error: 3041, Severity: 16, State: 1.
2009-03-06 10:00:02.61 Backup      BACKUP failed to complete the command BACKUP LOG FakeDBName Check the backup application log for detailed messages.
2009-03-06 10:00:03.61 Backup      Error: 3041, Severity: 16, State: 1.


執行完整備份的時候,沒有報錯。



原因分析:

1. 日誌備份時,需要備份自上一次日誌備份以來的整個日誌鏈。日誌鏈中的任何log corruption都會報錯,並導致日誌備份失敗。

2. 爲何完整備份沒有報錯呢?因爲完整備份只需要少量的事務日誌。參見 http://www.mssqlmct.cn/dba/?post=203




對策:

SQL Server 沒有重建事務日誌鏈的工具和直接方法。建議重建事務日誌鏈:

1. 停止該數據庫所有的事務;

2. 執行完整備份;

3. 將數據庫的恢復模式改爲“簡單”,此步驟將刪除原來的事務日誌鏈。如有大量緩衝區的數據未回寫硬盤,請執行 checkpoint。如有必要,可收縮事務日誌文件。

4. 再將數據庫的恢復模式改回“完整”;

5. 執行完整備份,此步驟將重建事務日誌鏈;

6. 可繼續執行事務日誌備份。




參考文獻:

https://www.sqlskills.com/blogs/paul/how-can-a-log-backup-fail-but-a-full-backup-succeed/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章