症状:
在附加 .MDF 数据库时 SQL Server,您会看到以下错误消息:
SQL Server 检测到基于逻辑一致性的 I/O 错误:撕裂页面(预期签名:0x########;实际签名:0x#######)。 它发生在读取文件“xxxx.mdf”中数据库 ID # 中偏移量### 中的页面 (#:#) 期间。 中的其他消息 SQL Server 错误日志或系统事件日志可能会提供更多详细信息。 这是威胁数据库完整性的严重错误情况,必须立即更正。 完成完整的数据库一致性检查 (DBCC CHECKDB)。 此错误可能由多种因素引起; 有关详细信息,请参阅 SQL Server 在线图书。
其中“xxx.mdf”是正在访问的 MDF 文件的名称。
有时您可能会成功附加 .MDF 数据库。 但是,当您尝试执行 SQL 语句时,例如
从 [TestDB].[dbo].[test_table_1] 选择 *
您还将收到上述错误消息。
报错信息截图:
准确的解释:
MDF文件中的数据以页为单位存储,每页8KB。 SQL Server 使用两种机制来确保页面中数据的一致性和完整性,即校验和或残缺页。 两者都是可选的。
If SQL Server 发现一些数据页的撕裂页无效,就会报这个错误。
您可以使用我们的产品 DataNumen SQL Recovery 从损坏的 MDF 文件中恢复数据并解决此错误。
示例文件:
将导致错误的示例损坏的 MDF 文件:
SQL Server 版本 | 损坏的 MDF 文件 | MDF文件修复 DataNumen SQL Recovery |
SQL Server 2005 | 错误5_1.mdf | 错误5_1_固定.mdf |
SQL Server 2008 R2 | 错误5_2.mdf | 错误5_2_固定.mdf |
SQL Server 2012 | 错误5_3.mdf | 错误5_3_固定.mdf |
SQL Server 2014 | 错误5_4.mdf | 错误5_4_固定.mdf |