SQL Server 检测到基于一致性的逻辑 I/O 错误 页撕裂

发布时间 2023-03-27 18:46:35作者: 浅巷深念

 

执行Sql出错:select count(0) from ***

消息 824,级别 24,状态 2,第 1 行
SQL Server 检测到基于一致性的逻辑 I/O 错误 页撕裂(签名应该为: 0x00000000,但实际为: 0x01040000)。在文件 'D:\DB\xxxx.mdf' 中、偏移量为 0x00000168b3c000 的位置对数据库 ID 7 中的页 (1:738718) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。

解决方案

  1. 备份数据库(重要);

  1. 执行修复SQL语句(分步执行):

    --1.设置数据库为单用户模式(会立即断开其他所有用户的连接)
    ALTER DATABASE YourDatabaseName
    SET SINGLE_USER
    WITH ROLLBACK IMMEDIATE;
    GO
     
    --2.修复数据库(允许数据丢失)
    DBCC CHECKDB ('YourDatabaseName', REPAIR_ALLOW_DATA_LOSS)
     
    --3.单用户模式关闭(多用户模式开启)
    ALTER DATABASE YourDatabaseName
    SET MULTI_USER;
    GO

    第2步执行的时间,一般视数据库大小。本次是200GB,大概1个多小时执行完毕。

    特别注意执行完第2步后,执行第3步,打开多用户模式。否则造成其他用户无法连接,而且不会有任何提示。

转载自 https://blog.csdn.net/qq_23663693/article/details/129397950