1. 程式人生 > >備份事務日誌時遇到 log corruption

備份事務日誌時遇到 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/


本文出自 “我們一起追過的MSSQL” 博客,請務必保留此出處http://jimshu.blog.51cto.com/3171847/1970418

備份事務日誌時遇到 log corruption