• 03-SQLServer事件整理


    一、824事件

    1、报错信息

    SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0x2da0cee5,但实际为: 0x2db9cefc)。在文件 'D:sqldatapayment.mdf' 中、偏移量为 0x00000000092000 的位置对数据库 ID 6 中的页 (1:73) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。

    SQL Server detected a logical consistency-based I/O error: 校验和不正确(应为: 0x2da0cee5,但实际为: 0x2db9cefc). It occurred during a 读取 of page (1:73) in database ID 6 at offset 0x00000000092000 in file 'D:sqldatapayment.mdf'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

     

     2、产生原因

      这个问题是我使用winhex工具,修改了.mdf文件里某一页的偏移量,然后修改的整个过程中,该数据库的页校验是CHECKSUM模式,所以在修改完偏移量数据库联机后,产生了这个问题。

      原理:当数据库的页校验是CHECKSUM或TORN_PAGE_DETECTION时,每次读取页面时,会计算页面的校验和值和页眉中保存的值是否一样,不匹配的话就会报这个错误

    3、解决办法

    (1)做checkdb操作报错

    命令:dbcc checkdb('payment')

    (2)最终解决方案(使用允许丢失数据的方式修复对应的表或者库)

    a.将数据库设置为单用户模式
    alter database payment set single_user with rollback immediate

    b.允许丢失数据对表做修复
    dbcc checktable('payment.dbo.person',repair_allow_data_loss)

    c.将数据库设置为多用户模式
    alter database payment set multi_user with rollback immediate

    再次查看发现可以查看了,但是数据丢了

  • 相关阅读:
    最后一次作业-- 总结报告
    第14.15周作业
    第七周作业
    第六周作业
    第四周作业
    第三周作业。
    第四次作业
    第三次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/jialanyu/p/12988652.html
Copyright © 2020-2023  润新知