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

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

时间:2023-07-25 18:34:26浏览次数:36  
标签:数据库 DB 校验 Server 001 SQL GO ALTER

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

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

解决方法:

数据库中执行以下语句:

--1.设置数据库为单用户模式(会立即断开其他所有用户的连接)
ALTER DATABASE  DB_001(要修复的数据库)
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

--2.修复数据库(允许数据丢失)
DBCC CHECKDB ('DB_001', REPAIR_ALLOW_DATA_LOSS)

--3.单用户模式关闭(多用户模式开启)
ALTER DATABASE DB_001
SET MULTI_USER;
GO

如果:通过DBCC CHECKDB('DB_001','REPAIR_ALLOW_DATA_LOSS')  修复

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

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

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

如果还不行,那就单表迁移吧。

标签:数据库,DB,校验,Server,001,SQL,GO,ALTER
From: https://www.cnblogs.com/approx/p/17580609.html

相关文章

  • MySQL 索引
    索引分析:索引概述:定义:MySQL官方对索引的定义:索引(Index)是帮助MySQL高效获取数据的数据结构。结论:索引是数据结构结构:MySQL支持多种存储引擎而各种存储引擎对索引的支持也各不相同因此MySQL数据库支持多种索引类型如BTree索引、哈希索引、全文索引等等目前大部分数据库......
  • kettle连接数据库报错:Error connecting to database: (using class org.gjt.mm.mysql.
    kettle连接MySQL报错但已经把相应的包放到kettle的lib目录下时,仍然报连接不上的错误,那可能是MySQL时区的问题。解决如下:登入MySQL修改为东八区的命令:方法一:mysql>setglobalmax_allowed_packet=1024*1024;mysql>setglobaltime_zone='+8:00';方法二:修改my.ini文件,在[mysql......
  • Mysql开启慢查询日志
    查看mysql的慢查询日志是否开启showvariableslike'%query%';  可以看到slow_query_log的值是OFF,mysql默认是不启用慢查询日志的。这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查......
  • mysql 中 myisam 与 innodb 的区别?
     1.事务支持>MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。>InnoDB:提供事务支持事务,外部键等高级数据库功能。具有事务(commit)、回滚(rollback)和崩溃修复能力(crashrecoverycapabilities)的事务安全(transaction-safe(......
  • sql server 多表联查怎么排重
    项目方案:SQLServer多表联查去重1.项目背景在SQLServer数据库中,当我们需要查询多个表并同时去除重复的记录时,可以使用多表联查的方式,并结合去重技术,以提高查询的效率和准确性。本项目旨在提供一种解决方案,通过SQL语句实现多表联查并去重的操作。2.方案概述本方案将通过以下......
  • sql server 得到数据库所有表名
    SQLServer:获取数据库所有表名在SQLServer中,我们经常需要获取数据库中所有表的名称。这对于进行数据库分析、数据导出以及其他操作非常有用。本文将介绍如何使用SQLServer查询来获取数据库中的所有表名。使用系统视图SQLServer提供了一些系统视图,可以帮助我们获取数据库......
  • sql server 存储过程 计数
    SQLServer存储过程计数的实现介绍在SQLServer中,存储过程是一种可重复使用的数据库对象,可以接受参数并返回结果。存储过程可以包含一系列的SQL语句,用于完成特定的数据库操作。在本文中,我们将讨论如何编写一个存储过程来实现计数功能。流程下面是实现SQLServer存储过程......
  • sql server 创建复制机制
    SQLServer创建复制机制整体流程下面是创建SQLServer复制机制的整体流程,可以用表格展示步骤:步骤描述1创建发布者2创建订阅者3配置发布者4配置订阅者5启动复制具体步骤和代码示例步骤1:创建发布者首先,我们需要创建一个发布者(即主数据库),用来......
  • sql server nvl
    SQLServerNVL的实现1.概述在SQLServer中,没有直接的NVL函数可用,但可以使用其他函数来实现相同的功能。本文将介绍如何使用ISNULL函数来模拟NVL函数。2.实现步骤以下表格展示了实现"SQLServerNVL"的步骤:步骤代码说明1SELECTcolumn_name,ISNULL(column_name,......
  • sql server express
    SQLServerExpressSQLServerExpressisalightweight,freeeditionofMicrosoft'sSQLServerdatabasemanagementsystem.Itprovidesareliableandefficientplatformformanagingandstoringdata.Inthisarticle,wewillexplorethefeaturesand......