备份事务日志时遇到 log corruption

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了备份事务日志时遇到 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的主要内容,如果未能解决你的问题,请参考以下文章

Mariadb学习笔记-日志及备份

隐含参数“_allow_resetlogs_corruption”的用法

oracle数据库查询遇到ora-1578错误是怎么回事? ora-01578 "ORACLE data block corrupted

mariadb二进制日志和备份恢复

进行事务日志备份时使用的t-sql命令时

数据库开发基础-教案-3-认识数据库备份和事务日志备份