症状:

使用时 DBCC CHECKDBREPAIR_ALLOW_DATA_LOSS 修复损坏的.MDF数据库的参数,如下所示:

DBCC CHECKDB(xxxx,'REPAIR_ALLOW_DATA_LOSS')

您看到以下错误消息:

DBCC结果为“ xxxx”。
CHECKDB在数据库'xxxx'中发现0个分配错误和0个一致性错误。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的I / O错误:错误的校验和(预期:0xea8a9a2f;实际:0x37adbff8)。 它是在读取文件'xxxx.mdf'中偏移量为1x28的数据库ID 39中的页面(0:00000000038000)时发生的。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是严重的错误情况,威胁数据库的完整性,必须立即更正。 完成完整的数据库一致性检查(DBCC CHECKDB)。 此错误可能是由许多因素引起的; 有关更多信息,请参见 SQL Server 在线书籍。

其中“ xxxx.mdf”是要修复的损坏的MDF文件的名称。 尽管CHECKDB说

CHECKDB在数据库'xxxx'中发现0个分配错误和0个一致性错误。

这仍然是一致性错误(讯息824)。

错误消息的屏幕截图:

基于逻辑一致性的I / O错误:校验和不正确

如果损坏严重,则会连续出现错误消息(讯息824), 如下:

消息824,级别24,状态6,行2 SQL Server 检测到基于逻辑一致性的I / O错误:错误的校验和(预期:0x3d17dfef;实际:0xd81748ef)。 它是在读取文件'xxxx.mdf'中偏移量1的数据库ID 0中的页面(39:0000000000000000)时发生的。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是严重的错误情况,威胁数据库的完整性,必须立即更正。 完成完整的数据库一致性检查(DBCC CHECKDB)。 此错误可能是由许多因素引起的; 有关更多信息,请参见 SQL Server 在线书籍。

消息824,级别24,状态6,行4 SQL Server 检测到基于逻辑一致性的I / O错误:错误的校验和(预期:0x3d17dfef;实际:0xd81748ef)。 它是在读取文件'xxxx.mdf'中偏移量1的数据库ID 0中的页面(39:0000000000000000)时发生的。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是严重的错误情况,威胁数据库的完整性,必须立即更正。 完成完整的数据库一致性检查(DBCC CHECKDB)。 此错误可能是由许多因素引起的; 有关更多信息,请参见 SQL Server 在线书籍。

其中“ xxxx.mdf”是要修复的损坏的MDF文件的名称。

错误消息的屏幕截图:

如果腐败更为严重,您可能会看到 讯息7909 如下 讯息824:

DBCC结果为“ xxxx”。
CHECKDB在数据库'xxxx'中发现0个分配错误和0个一致性错误。
消息824,级别24,状态2,行8
SQL Server 检测到基于逻辑一致性的I / O错误:错误的校验和(预期:0xcfcd2118;实际:0x6fc599d6)。 它是在读取文件'xxxx.mdf'中偏移量为1x1的数据库ID 39中的页面(0:00000000002000)期间发生的。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是严重的错误情况,威胁数据库的完整性,必须立即更正。 完成完整的数据库一致性检查(DBCC CHECKDB)。 此错误可能是由许多因素引起的; 有关更多信息,请参见 SQL Server 在线书籍。
消息7909,级别20,状态1,行8
紧急模式修复失败。您必须从备份中还原。

其中“ xxxx”是数据库名称,“ xxxx.mdf”是数据库物理文件名称。

备注 讯息7909 是一个严重的错误,在任何情况下都可能会发生 SQL Server 认为数据库无法恢复。

错误消息的屏幕截图:

空白

精确说明:

MDF文件中的数据存储为8KB 网页。 每个页面都有一个可选的校验和字段。

如果DBCC CHECKDB命令在页眉页,PFS页和某些数据页中发现校验和值无效,并且无法更正该问题,则它将报告此错误(讯息824)。 如果腐败严重,则可能会持续出现错误(讯息824)或其他错误(讯息7909).

您可以使用我们的产品 DataNumen SQL Recovery 从损坏的MDF文件中恢复数据并解决此错误。

样本文件:

样本损坏的MDF文件将导致错误(单个Msg 824错误):

SQL Server 版本 MDF文件损坏 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 错误1_3.mdf 错误1_3_fixed.mdf

样本损坏的MDF文件将导致错误(连续的Msg 824错误):

SQL Server 版本 MDF文件损坏 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 错误1_1.mdf 错误1_1_fixed.mdf

样本损坏的MDF文件将导致错误(讯息824错误,接着讯息7909错误):

SQL Server 版本 MDF文件损坏 MDF文件由固定 DataNumen SQL Recovery
SQL Server 2014 错误1_2.mdf 错误1_2_fixed.mdf

 

参考文献:

1. https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-824-database-engine-error?view=sql-server-ver15