数据库在进行CHECKDB时出现 SQL Server 检测到基于一致性的逻辑 I/O 错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库在进行CHECKDB时出现 SQL Server 检测到基于一致性的逻辑 I/O 错误相关的知识,希望对你有一定的参考价值。
目前发现查询九张表会出现这个错误,查了很多资料,都说CHECKDB一下就可以,可是我现在是在CHECKDB时还出现这个错误,请问有谁遇到过的吗?错误跟下面的一样
SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0xd4eae74b,但实际为: 0xd4eb674b)。在文件 'D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\CCMS.mdf' 中、偏移量为 0x000000005be000 的位置对数据库 ID 7 中的页 (1:735) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。
在进行CHECKDB 时还有出现 检查已终止,收集事实数据时检测到错误,可能是tempdb空间用尽或某个表不一致,请检查前面的错误消息。
那几张表查询都查询不了,
追答那表明那9张表已经不完整,已损坏,需要在新数据库中重建那几个表,如果有可用时的备份,就从备份恢复数据,如没有需要根据相关性,从关连表推断出可能的值....这个比较麻烦,
而且,有可能,那9张表删除都删除不了
嗯。。确实那九张表连删除都删除不了。。一删除就提示SQL Server 检测到基于一致性的逻辑 I/O 错误
参考技术A 你有备份吗?有以前的备份应该能解决这个问题。 参考技术B 重装系统避免 ORA-00904 - 在 java 中进行 sql 查询时出现无效标识符错误,因为该列可能会或可能不会在数据库中预设
【中文标题】避免 ORA-00904 - 在 java 中进行 sql 查询时出现无效标识符错误,因为该列可能会或可能不会在数据库中预设【英文标题】:Avoid ORA-00904 - invalid identifier error while doing sql query in java as the column may or may not be preset in the database 【发布时间】:2019-11-22 15:04:10 【问题描述】:我正在尝试编写java
代码以将数据从oracle database
迁移到其他数据库。
我的用例是不同的客户端有不同版本的代码,因此数据库列可能会有所不同。更高版本的客户端有额外的列。
例如:新版本为COL99
的客户端在表SAMPLE_TABLE
中。
在编写迁移代码时,如果我尝试从SAMPLE_TABLE
中选择COL99
,它将适用于新客户端。但是对于旧版本的客户端,代码失败了
ORA-00904 标识符无效错误。
有没有办法在sql
查询或java
代码中处理,如果数据库表中不存在该列,只需忽略并且不返回值而不是抛出异常。
【问题讨论】:
想必你想先在 oracle 中查询 all_tab_columns 以查看该列是否存在,而不是作为事后错误处理。 您是否维护任何用于识别应用程序版本的表格? @JoshEller 同意,这是一个可能的解决方案。但是我在迁移项目中有很多表和很多列。所以这种方法不太可行。 【参考方案1】:您应该首先检查您当前的数据库连接是否存在COL99
。
对于 Oracle,您可以使用如下查询:
SELECT
COL.COLUMN_ID,
COL.OWNER AS SCHEMA_NAME,
COL.TABLE_NAME,
COL.COLUMN_NAME
FROM
SYS.ALL_TAB_COLUMNS COL
INNER JOIN
SYS.ALL_TABLES T
ON COL.OWNER = T.OWNER
AND
COL.TABLE_NAME = T.TABLE_NAME
WHERE
COL.OWNER = 'SCHEMA'
AND
COL.TABLE_NAME = 'SAMPLE_TABLE'
AND
COL.COLUMN_NAME = 'COL99'
然后,您可以使用或不使用COL99
创建查询。
【讨论】:
这种方法是一种可能的解决方案。但是在我们的迁移项目中,我们有很多表和很多列。查询会变得很复杂,也不是很干净。 它认为,没有办法忽略查询中丢失的列。也许你事先添加缺失的列(使用适当的默认值)更方便,这样你就可以保持查询不变。以上是关于数据库在进行CHECKDB时出现 SQL Server 检测到基于一致性的逻辑 I/O 错误的主要内容,如果未能解决你的问题,请参考以下文章
MS Sql Server 数据库或表修复(DBCC CHECKDB)
MS SqlServer DBCC CHECKDB 数据库/表修复
使用dubbo引用和发布服务时出现的异常:HTTP状态500 - 请求处理失败; 嵌套异常是com.alibaba.dubbo.rpc.RpcException:无法在服务cn.e3mall.serv