sql server 2005错误:发生不可恢复的I/O错误 1:(函数不正确)

时间:2021-02-20 19:12:31
在备份数据库时出现如下错误

发生不可恢复的I/O错误 1:(函数不正确)

如下图 sql server 2005错误:发生不可恢复的I/O错误 1:(函数不正确)

14 个解决方案

#1


檢查 E盤硬盤是否損壞

#2


LZ 尝试将备份指定的地址指向一个新的物理路径下看看?

#3


回上楼,没用

#4


DBCC checkDB 看看数据库有没有问题。

#5


E 盘是否映射的盘符? 如果是的话 net use 看看能用不? 另外,LZ是否有写入此盘符的权限?

#6


czbt2的 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。
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123340)。1(函数不正确。) 失败。 
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123445)。1(函数不正确。) 失败。 
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123446)。1(函数不正确。) 失败。 
CHECKDB 发现有 0 个分配错误和 3 个一致性错误与任何单个的对象都没有关联。
。。。。
hnxc.czbt_btdj_0801的 DBCC 结果。
对象 'hnxc.czbt_btdj_0801' 的 0 页中有 0 行。
hnxc.czbt_btdj_0209的 DBCC 结果。
对象 'hnxc.czbt_btdj_0209' 的 1 页中有 2 行。
hnxc.statement_record的 DBCC 结果。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123340)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8976,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。在扫描过程中未发现页 (1:123340),但该页的父级 (1:123597) 和上一页 (1:123339) 都引用了它。请检查以前的错误消息。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。页 (1:123341) 缺少上一页 (1:123340) 对它的引用。可能是因为链链接有问题。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123445)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8976,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。在扫描过程中未发现页 (1:123445),但该页的父级 (1:123597) 和上一页 (1:123444) 都引用了它。请检查以前的错误消息。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123446)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8980,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。索引节点页 (1:123597),槽 111 指向子页 (1:123446) 和上一子页 (1:123445),但未遇到这些页。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。页 (1:123447) 缺少上一页 (1:123446) 对它的引用。可能是因为链链接有问题。
对象 'hnxc.statement_record' 的 9785 页中有 197751 行。
CHECKDB 在表 'hnxc.statement_record' (对象 ID 2002874252)中发现 0 个分配错误和 8 个一致性错误。
hnxc.czbt_btdj_0502_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0502_old' 的 1 页中有 33 行。
hnxc.statement_old_record的 DBCC 结果。
对象 'hnxc.statement_old_record' 的 204729 页中有 2060610 行。
hnxc.czbt_btdj_0801_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0801_old' 的 0 页中有 0 行。
hnxc.czbt_btdj_0209_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0209_old' 的 0 页中有 0 行。
hnxc.paramConfig的 DBCC 结果。
对象 'hnxc.paramConfig' 的 1 页中有 1 行。
dtproperties的 DBCC 结果。
对象 'dtproperties' 的 0 页中有 0 行。
hnxc.czbt_btdj_0503的 DBCC 结果。
对象 'hnxc.czbt_btdj_0503' 的 1 页中有 10 行。
CHECKDB 在数据库 'czbt2' 中发现 0 个分配错误和 11 个一致性错误。
对于由 DBCC CHECKDB (czbt2)发现的错误,repair_allow_data_loss 是最低的修复级别。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

#7


E盘是实际盘符,用的是windows 2003 有写入的权限

#8


1.先停止SQL SERVER,备份系统目录下的MDF,LDF文件.
2.启动SQL SERVER,检查数据库,就你上面用的那个,然后看看是否存在什么地方需要修复.

#9


重建一下所有的索引試試

#11


无法使用闩锁类型 SH 读取并闩锁页!!!

LZ的数据库存在问题的。

1、可以用改变数据库为紧急模式,然后DBCC CHECKDB加参数REPAIR_ALLOW_DATA_LOSS试试看。(部分数据会丢失)
2、重新建立新的数据库,把数据导过去也是个笨办法。(可能恢复全部数据,但需要投入很多精力)
3、找个最近的备份,恢复出来然后看看增量数据处理进去。

祝好运了!

#12


从错误信息看

1:分区表出现问题,可考虑试着先将分区表的所有数据转储到另一表中(不一定成功啊:(),然后删除分区表分区函数
  分区表的结构cluster 索引的逻辑性已经被破坏
 (
 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类 型为 In-row data)。页 (1:123447) 缺少上一页 (1:123446) 对它的引用。可能是因为链链接有问题。
  )

2:其他出问题的对象大多如'hnxc.czbt_btdj_0503'从字面理解应该都是归档数据吧?
  如果使用dbcc checkdb  REPAIR_ALLOW_DATA_LOSS选项这些归档应该能找回吧?
对于'hnxc.statement_record' 这类型的表数据如果修复出现丢失能从备份中找回吗?

另外lz最好说一下此库的备份策略及备份情况,以便数据损失最小化.

#13


真是怪了,我运行检查磁盘,居然就好了.

看来是磁盘出问题了

#14


引用 13 楼 hwhtj 的回复:
真是怪了,我运行检查磁盘,居然就好了.

看来是磁盘出问题了

gx

#1


檢查 E盤硬盤是否損壞

#2


LZ 尝试将备份指定的地址指向一个新的物理路径下看看?

#3


回上楼,没用

#4


DBCC checkDB 看看数据库有没有问题。

#5


E 盘是否映射的盘符? 如果是的话 net use 看看能用不? 另外,LZ是否有写入此盘符的权限?

#6


czbt2的 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。
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123340)。1(函数不正确。) 失败。 
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123445)。1(函数不正确。) 失败。 
消息 8966,级别 16,状态 2,第 1 行
无法使用闩锁类型 SH 读取并闩锁页 (1:123446)。1(函数不正确。) 失败。 
CHECKDB 发现有 0 个分配错误和 3 个一致性错误与任何单个的对象都没有关联。
。。。。
hnxc.czbt_btdj_0801的 DBCC 结果。
对象 'hnxc.czbt_btdj_0801' 的 0 页中有 0 行。
hnxc.czbt_btdj_0209的 DBCC 结果。
对象 'hnxc.czbt_btdj_0209' 的 1 页中有 2 行。
hnxc.statement_record的 DBCC 结果。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123340)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8976,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。在扫描过程中未发现页 (1:123340),但该页的父级 (1:123597) 和上一页 (1:123339) 都引用了它。请检查以前的错误消息。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。页 (1:123341) 缺少上一页 (1:123340) 对它的引用。可能是因为链链接有问题。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123445)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8976,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。在扫描过程中未发现页 (1:123445),但该页的父级 (1:123597) 和上一页 (1:123444) 都引用了它。请检查以前的错误消息。
消息 2533,级别 16,状态 1,第 1 行
表错误: 看不到分配给对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)的页 (1:123446)。该页可能无效,或者页头中可能包含错误的分配单元 ID。
消息 8980,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。索引节点页 (1:123597),槽 111 指向子页 (1:123446) 和上一子页 (1:123445),但未遇到这些页。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类型为 In-row data)。页 (1:123447) 缺少上一页 (1:123446) 对它的引用。可能是因为链链接有问题。
对象 'hnxc.statement_record' 的 9785 页中有 197751 行。
CHECKDB 在表 'hnxc.statement_record' (对象 ID 2002874252)中发现 0 个分配错误和 8 个一致性错误。
hnxc.czbt_btdj_0502_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0502_old' 的 1 页中有 33 行。
hnxc.statement_old_record的 DBCC 结果。
对象 'hnxc.statement_old_record' 的 204729 页中有 2060610 行。
hnxc.czbt_btdj_0801_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0801_old' 的 0 页中有 0 行。
hnxc.czbt_btdj_0209_old的 DBCC 结果。
对象 'hnxc.czbt_btdj_0209_old' 的 0 页中有 0 行。
hnxc.paramConfig的 DBCC 结果。
对象 'hnxc.paramConfig' 的 1 页中有 1 行。
dtproperties的 DBCC 结果。
对象 'dtproperties' 的 0 页中有 0 行。
hnxc.czbt_btdj_0503的 DBCC 结果。
对象 'hnxc.czbt_btdj_0503' 的 1 页中有 10 行。
CHECKDB 在数据库 'czbt2' 中发现 0 个分配错误和 11 个一致性错误。
对于由 DBCC CHECKDB (czbt2)发现的错误,repair_allow_data_loss 是最低的修复级别。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

#7


E盘是实际盘符,用的是windows 2003 有写入的权限

#8


1.先停止SQL SERVER,备份系统目录下的MDF,LDF文件.
2.启动SQL SERVER,检查数据库,就你上面用的那个,然后看看是否存在什么地方需要修复.

#9


重建一下所有的索引試試

#10


#11


无法使用闩锁类型 SH 读取并闩锁页!!!

LZ的数据库存在问题的。

1、可以用改变数据库为紧急模式,然后DBCC CHECKDB加参数REPAIR_ALLOW_DATA_LOSS试试看。(部分数据会丢失)
2、重新建立新的数据库,把数据导过去也是个笨办法。(可能恢复全部数据,但需要投入很多精力)
3、找个最近的备份,恢复出来然后看看增量数据处理进去。

祝好运了!

#12


从错误信息看

1:分区表出现问题,可考虑试着先将分区表的所有数据转储到另一表中(不一定成功啊:(),然后删除分区表分区函数
  分区表的结构cluster 索引的逻辑性已经被破坏
 (
 对象 ID 2002874252,索引 ID 1,分区 ID 412735343689728,分配单元 ID 412735343689728 (类 型为 In-row data)。页 (1:123447) 缺少上一页 (1:123446) 对它的引用。可能是因为链链接有问题。
  )

2:其他出问题的对象大多如'hnxc.czbt_btdj_0503'从字面理解应该都是归档数据吧?
  如果使用dbcc checkdb  REPAIR_ALLOW_DATA_LOSS选项这些归档应该能找回吧?
对于'hnxc.statement_record' 这类型的表数据如果修复出现丢失能从备份中找回吗?

另外lz最好说一下此库的备份策略及备份情况,以便数据损失最小化.

#13


真是怪了,我运行检查磁盘,居然就好了.

看来是磁盘出问题了

#14


引用 13 楼 hwhtj 的回复:
真是怪了,我运行检查磁盘,居然就好了.

看来是磁盘出问题了

gx