数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 解决方法

这篇具有很好参考价值的文章主要介绍了数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、错误提示信息: 

二、原因分析:

三、解决方法:

四、执行完成结果:

五、重要说明


一、错误提示信息: 

本文验证是数据库中的baiduAi_0258表无法通过select语句ID条件查询,

如执行 select * from baiduAi_0258 where ID ='0000403e-7903-413b-87ab-3c14d0295482'  提示以下错误信息。

sqlserver检测到基于一致性的逻辑io错误,数据库,sqlserver

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

完成时间: 2023-04-27T21:19:31.2286360+08:00

二、原因分析:

数据库系统表架构损坏,也可能是数据库中某个表数据文件已损坏,Sql Server并提示使用DBCC检测修复。

三、解决方法:

数据库中执行以下语句:

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

通过DBCC CHECKDB('hbposv8','REPAIR_ALLOW_DATA_LOSS')  修复

如以上测试无法修复,说明系统表架构已经严重损坏。

需要通过底层16机制代码 纠正错误页 。可以快速修复损坏文件

 数据库中执行以下语句:
USE MASTER 
GO 
SP_CONFIGURE 'ALLOW UPDATES',1 
GO
RECONFIGURE WITH OVERRIDE 
GO 
ALTER DATABASE BDAIData SET emergency
GO 
ALTER DATABASE BDAIData SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO 
DBCC CHECKDB('BDAIData ','REPAIR_ALLOW_DATA_LOSS') 
GO 
ALTER DATABASE BDAIData SET ONLINE 
GO 
sp_configure 'allow updates', 0 
GO
reconfigure with override 
GO 
ALTER DATABASE BDAIData SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO 

四、执行完成结果:

BDAIData 的 DBCC 结果。
Service Broker 消息 9675,状态 1: 已分析的消息类型: 14。
Service Broker 消息 9676,状态 1: 已分析的服务约定: 6。
Service Broker 消息 9667,状态 1: 已分析的服务: 3。
Service Broker 消息 9668,状态 1: 已分析的服务队列: 3。
Service Broker 消息 9669,状态 1: 已分析的会话端点: 0。
Service Broker 消息 9674,状态 1: 已分析的会话组: 0。
Service Broker 消息 9670,状态 1: 已分析的远程服务绑定: 0。
Service Broker 消息 9605,状态 1: 已分析的会话优先级: 0。
sys.sysrscols的 DBCC 结果。
对象 'sys.sysrscols' 的 205 页中有 19898 行。
sys.sysrowsets的 DBCC 结果。
对象 'sys.sysrowsets' 的 29 页中有 2456 行。
sys.sysclones的 DBCC 结果。
对象 'sys.sysclones' 的 0 页中有 0 行。
sys.sysallocunits的 DBCC 结果。
对象 'sys.sysallocunits' 的 32 页中有 2621 行。
sys.sysfiles1的 DBCC 结果。
对象 'sys.sysfiles1' 的 1 页中有 2 行。
sys.sysseobjvalues的 DBCC 结果。
对象 'sys.sysseobjvalues' 的 0 页中有 0 行。
sys.syspriorities的 DBCC 结果。
对象 'sys.syspriorities' 的 0 页中有 0 行。
sys.sysdbfrag的 DBCC 结果。
对象 'sys.sysdbfrag' 的 0 页中有 0 行。
sys.sysfgfrag的 DBCC 结果。
对象 'sys.sysfgfrag' 的 0 页中有 0 行。
sys.sysdbfiles的 DBCC 结果。
对象 'sys.sysdbfiles' 的 1 页中有 2 行。
sys.syspru的 DBCC 结果。
对象 'sys.syspru' 的 0 页中有 0 行。
sys.sysbrickfiles的 DBCC 结果。
对象 'sys.sysbrickfiles' 的 0 页中有 0 行。
sys.sysphfg的 DBCC 结果。
对象 'sys.sysphfg' 的 1 页中有 1 行。
sys.sysprufiles的 DBCC 结果。
对象 'sys.sysprufiles' 的 1 页中有 2 行。
sys.sysftinds的 DBCC 结果。
对象 'sys.sysftinds' 的 0 页中有 0 行。
sys.sysowners的 DBCC 结果。
对象 'sys.sysowners' 的 1 页中有 18 行。
sys.sysdbreg的 DBCC 结果。
对象 'sys.sysdbreg' 的 0 页中有 0 行。
sys.sysprivs的 DBCC 结果。
对象 'sys.sysprivs' 的 1 页中有 171 行。
sys.sysschobjs的 DBCC 结果。
对象 'sys.sysschobjs' 的 102 页中有 4772 行。
sys.syscsrowgroups的 DBCC 结果。
对象 'sys.syscsrowgroups' 的 0 页中有 0 行。
sys.sysextsources的 DBCC 结果。
对象 'sys.sysextsources' 的 0 页中有 0 行。
sys.sysexttables的 DBCC 结果。
对象 'sys.sysexttables' 的 0 页中有 0 行。
sys.sysextfileformats的 DBCC 结果。
对象 'sys.sysextfileformats' 的 0 页中有 0 行。
sys.sysmultiobjvalues的 DBCC 结果。
对象 'sys.sysmultiobjvalues' 的 0 页中有 0 行。
sys.syscolpars的 DBCC 结果。
对象 'sys.syscolpars' 的 307 页中有 16850 行。
sys.sysxlgns的 DBCC 结果。
对象 'sys.sysxlgns' 的 0 页中有 0 行。
sys.sysxsrvs的 DBCC 结果。
对象 'sys.sysxsrvs' 的 0 页中有 0 行。
sys.sysnsobjs的 DBCC 结果。
对象 'sys.sysnsobjs' 的 1 页中有 1 行。
sys.sysusermsgs的 DBCC 结果。
对象 'sys.sysusermsgs' 的 0 页中有 0 行。
sys.syscerts的 DBCC 结果。
对象 'sys.syscerts' 的 0 页中有 0 行。
sys.sysrmtlgns的 DBCC 结果。
对象 'sys.sysrmtlgns' 的 0 页中有 0 行。
sys.syslnklgns的 DBCC 结果。
对象 'sys.syslnklgns' 的 0 页中有 0 行。
sys.sysxprops的 DBCC 结果。
对象 'sys.sysxprops' 的 10 页中有 402 行。
sys.sysscalartypes的 DBCC 结果。
对象 'sys.sysscalartypes' 的 1 页中有 34 行。
sys.systypedsubobjs的 DBCC 结果。
对象 'sys.systypedsubobjs' 的 0 页中有 0 行。
sys.sysidxstats的 DBCC 结果。
对象 'sys.sysidxstats' 的 138 页中有 6865 行。
sys.sysiscols的 DBCC 结果。
对象 'sys.sysiscols' 的 47 页中有 6559 行。
sys.sysendpts的 DBCC 结果。
对象 'sys.sysendpts' 的 0 页中有 0 行。
sys.syswebmethods的 DBCC 结果。
对象 'sys.syswebmethods' 的 0 页中有 0 行。
sys.sysbinobjs的 DBCC 结果。
对象 'sys.sysbinobjs' 的 1 页中有 23 行。
sys.sysaudacts的 DBCC 结果。
对象 'sys.sysaudacts' 的 0 页中有 0 行。
sys.sysobjvalues的 DBCC 结果。
对象 'sys.sysobjvalues' 的 1778 页中有 7112 行。
sys.syscscolsegments的 DBCC 结果。
对象 'sys.syscscolsegments' 的 0 页中有 0 行。
sys.syscsdictionaries的 DBCC 结果。
对象 'sys.syscsdictionaries' 的 0 页中有 0 行。
sys.sysclsobjs的 DBCC 结果。
对象 'sys.sysclsobjs' 的 1 页中有 16 行。
sys.sysrowsetrefs的 DBCC 结果。
对象 'sys.sysrowsetrefs' 的 0 页中有 0 行。
sys.sysremsvcbinds的 DBCC 结果。
对象 'sys.sysremsvcbinds' 的 0 页中有 0 行。
sys.sysxmitqueue的 DBCC 结果。
对象 'sys.sysxmitqueue' 的 0 页中有 0 行。
sys.sysrts的 DBCC 结果。
对象 'sys.sysrts' 的 1 页中有 1 行。
sys.sysconvgroup的 DBCC 结果。
对象 'sys.sysconvgroup' 的 0 页中有 0 行。
sys.sysdesend的 DBCC 结果。
对象 'sys.sysdesend' 的 0 页中有 0 行。
sys.sysdercv的 DBCC 结果。
对象 'sys.sysdercv' 的 0 页中有 0 行。
sys.syssingleobjrefs的 DBCC 结果。
对象 'sys.syssingleobjrefs' 的 8 页中有 1017 行。
sys.sysmultiobjrefs的 DBCC 结果。
对象 'sys.sysmultiobjrefs' 的 5 页中有 496 行。
sys.sysguidrefs的 DBCC 结果。
对象 'sys.sysguidrefs' 的 0 页中有 0 行。
sys.sysfoqueues的 DBCC 结果。
对象 'sys.sysfoqueues' 的 0 页中有 0 行。
sys.syschildinsts的 DBCC 结果。
对象 'sys.syschildinsts' 的 0 页中有 0 行。
sys.syscompfragments的 DBCC 结果。
对象 'sys.syscompfragments' 的 0 页中有 0 行。
sys.sysftsemanticsdb的 DBCC 结果。
对象 'sys.sysftsemanticsdb' 的 0 页中有 0 行。
sys.sysftstops的 DBCC 结果。
对象 'sys.sysftstops' 的 0 页中有 0 行。
sys.sysftproperties的 DBCC 结果。
对象 'sys.sysftproperties' 的 0 页中有 0 行。
sys.sysxmitbody的 DBCC 结果。
对象 'sys.sysxmitbody' 的 0 页中有 0 行。
sys.sysfos的 DBCC 结果。
对象 'sys.sysfos' 的 0 页中有 0 行。
sys.sysqnames的 DBCC 结果。
对象 'sys.sysqnames' 的 1 页中有 98 行。
sys.sysxmlcomponent的 DBCC 结果。
对象 'sys.sysxmlcomponent' 的 1 页中有 100 行。
sys.sysxmlfacet的 DBCC 结果。
对象 'sys.sysxmlfacet' 的 1 页中有 112 行。
sys.sysxmlplacement的 DBCC 结果。
对象 'sys.sysxmlplacement' 的 1 页中有 19 行。
sys.sysobjkeycrypts的 DBCC 结果。
对象 'sys.sysobjkeycrypts' 的 0 页中有 0 行。
sys.sysasymkeys的 DBCC 结果。
对象 'sys.sysasymkeys' 的 0 页中有 0 行。
sys.syssqlguides的 DBCC 结果。
对象 'sys.syssqlguides' 的 0 页中有 0 行。
sys.sysbinsubobjs的 DBCC 结果。
对象 'sys.sysbinsubobjs' 的 1 页中有 3 行。
sys.syssoftobjrefs的 DBCC 结果。
对象 'sys.syssoftobjrefs' 的 1 页中有 77 行。
baiduAi_0258的 DBCC 结果。
对象 'baiduAi_0258' 的 11531 页中有 100008 行。
baidu_Company的 DBCC 结果。
对象 'baidu_Company' 的 0 页中有 0 行。
CHECKDB 在数据库 'BDAIData' 中发现 0 个分配错误和 2 个一致性错误。
CHECKDB 在数据库 'BDAIData' 中修复了 0 个分配错误和 2 个一致性错误。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

完成时间: 2023-04-27T21:25:05.5827249+08:00

五、重要说明

请务必做好数据库备份,备份了数据库,在任何操作下都能保证数据绝对安全。文章来源地址https://www.toymoban.com/news/detail-596087.html

到了这里,关于数据库 SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确 解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 缓存和数据库一致性问题分析

    目录 1、数据不一致的原因 1.1 并发操作 1.2 非原子操作 1.3 数据库主从同步延迟 2、数据不一致的解决方案 2.1 并发操作 2.2 非原子操作 2.3 主从同步延迟 2.4 最终方案 3、不同场景下的特殊考虑 3.1 读多写少的场景 3.2 读少写多的场景 导致缓存和数据库数据不一致的原因有三个

    2024年02月14日
    浏览(34)
  • 如何保证ES和数据库的数据一致性?

    在业务中,我们通常需要把数据库中的数据变更同步到ES中,那么如何保证数据库和ES的一致性呢?通常有以下几种做法: 双写 在代码中,对数据库和ES进行双写,并且先操作本地数据库,后操作ES,而且还需要把两个操作放到一个事务中:  在以上逻辑中,如果写数据库成功

    2024年04月28日
    浏览(41)
  • redis实战-缓存数据&解决缓存与数据库数据一致性

    缓存( Cache),就是数据交换的 缓冲区 ,俗称的缓存就是 缓冲区内的数据 ,一般从数据库中获取,存储于本地代码。防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪,这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存技术,

    2024年02月12日
    浏览(43)
  • 怎样保证数据库和redis里的数据一致性

    使用缓存更新策略:在更新数据库时,同时更新Redis中相应的数据。这可以通过编写代码来实现,在数据库更新操作完成后,同步更新Redis中对应的数据。这可以通过在代码中使用事务来保证更新的原子性,确保数据库和Redis中的数据保持一致。 使用消息队列:可以将数据库更

    2024年02月19日
    浏览(39)
  • Redis如何保证缓存和数据库一致性?

    现在我们在面向增删改查开发时,数据库数据量大时或者对响应要求较快,我们就需要用到Redis来拿取数据。 Redis:是一种高性能的内存数据库,它将数据以键值对的形式存储在内存中,具有读写速度快、支持多种数据类型、原子性操作、丰富的特性等优势。 优势: 性能极高

    2024年01月16日
    浏览(58)
  • 怎么保证缓存与数据库的最终一致性?

    目录 零.读数据的标准操作 一.Cache aside Patten--旁路模式 二.Read/Write Through Pattern--读写穿透 三.Write Back Pattern--写回 四.运用canal监听mysql的binlog实现缓存同步 这里想说的是不管哪种模式读操作都是一样的,这是一种统一的规范: 但写操作和同步策略却有不同。 这个是最常见的

    2024年04月08日
    浏览(38)
  • Redis---数据库和缓存如何保证一致性?

    用「读 + 写」请求的并发的场景来分析: 假如某个用户数据在缓存中不存在,请求 A 读取数据时从数据库中查询到年龄为 20,在未写入缓存中时另一个请求 B 更新数据。它更新数据库中的年龄为 21,并且清空缓存。这时请求 A 把从数据库中读到的年龄为 20 的数据写入到缓存

    2024年01月24日
    浏览(45)
  • 深入理解数据库事务:确保数据完整性与一致性

    在现代信息系统中,数据是至关重要的资产之一。作为一名后端开发人员,与数据库的交道必不可少,为了确保数据的完整性、一致性和可靠性,数据库引入了事务的概念。本次将带您深入了解数据库事务的重要性、特性以及如何在应用程序中正确地使用事务来维护数据的稳

    2024年02月12日
    浏览(37)
  • Redis如何保障缓存与数据库的数据一致性问题?

    目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存+数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下,该解决方案要注意的问题 1.1 Cache Aside Pattern概念以及读写逻辑 (1)读的时候,先读缓存,缓存没有的话,那么就读数据库,然后取

    2023年04月21日
    浏览(40)
  • mysql和redis如何保证数据库一致性

    如果对于小公司的单机服务器来说在更新和删除mysql数据的同时对redis缓存进行更新或者删除就行,一般有两个选择,例如: 先更新MySQL,后删除(或更新)Redis 先删除(或更新)Redis,后更新MySQL 但是不管使用其中哪种方式,都存在两个可能的问题: 由于第一步与第二步并不是原

    2023年04月24日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包