日期:2014-05-16  浏览次数:20454 次

数据库文件变成可疑,修复的时候报IO错误

use YF_data

go

ALTER DATABASE YF_data SET SINGLE_USER

DBCC CHECKDB (YF_data, repair_allow_data_loss) with NO_INFOMSGS

go

ALTER DATABASE YF_data SET MULTI_USER

用这个修复的时候报错
消息 1505,级别 16,状态 1,第 4 行
CREATE UNIQUE INDEX 终止,因为发现对象名称 'dbo.YF_Trade' 和索引名称 'PK__YF_Trade__44FF419A' 有重复的键。重复的键值为 (129567)。
消息 8945,级别 16,状态 1,第 4 行
表错误: 将重新生成对象 ID 1141579105,索引 ID 1。
        无法修复此错误。 
消息 8935,级别 16,状态 1,第 4 行
表错误: 对象 ID 1141579105,索引 ID 1,分区 ID 72057594041532416,分配单元 ID 72057594046775296 (类型为 In-row data)。页 (1:26062) 上的上一页链接 (1:26061) 与父代 (1:26524) 槽 159 所预期的此页的上一页 (1:27291) 不匹配。
        该错误已修复。
消息 8936,级别 16,状态 1,第 4 行
表错误: 对象 ID 1141579105,索引 ID 1,分区 ID 72057594041532416,分配单元 ID 72057594046775296 (类型为 In-row data)。B 树链链接不匹配。(1:27291)->next = (1:26062),但 (1:26062)->Prev = (1:26061)。
        该错误已修复。
消息 8978,级别 16,状态 1,第 4 行
表错误: 对象 ID 1141579105,索引 ID 1,分区 ID 72057594041532416,分配单元 ID 72057594046775296 (类型为 In-row data)。页 (1:27291) 缺少上一页 (1:26061) 对它的引用。可能是因为链链接有问题。
        该错误已修复。
CHECKDB 在表 'YF_Trade' (对象 ID 1141579105)中发现 0 个分配错误和 3 个一致性错误。
CHECKDB 在表 'YF_Trade' (对象 ID 1141579105)中修复了 0 个分配错误和 3 个一致性错误。
CHECKDB 在数据库 'YF_data' 中发现 0 个分配错误和 3 个一致性错误。
CHECKDB 在数据库 'YF_data' 中修复了 0 个分配错误和 3 个一致性错误。
语句已终止。
消息 824,级别 24,状态 2,第 1 行
SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确(应为 1:27363,但实际为 0:0)。在文件 'E:\Database\YF_data.mdf' 中、偏移量为 0x0000000d5c6000 的位置对数据库 ID 5 中的页 (1:27363) 执行 读取 期间,发生了该错误。SQL Server 错误日志或系统事件日志中的其他消息可能提供了更详细信息。这是一个威胁数据库完整性的严重错误条件,必须立即纠正。请执行完整的数据库一致性检查(DBCC CHECKDB)。此错误可以由许多因素导致;有关详细信息,请参阅 SQL Server 联机丛书。

库中除了一个表之外其他表正常,查询有问题表的时候报错:

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


------解决方案--------------------
1.修改到Emergency模式
2.修改到单用户
3。允许DBCC CHECKDB修复。

当然可以在修复之前把数据尽可能的倒出来,这样可以在修复之后比对数据的丢失情况。
------解决方案--------------------
找最近的数据备份,尝试基于数据页的数据库恢复.

restore database YF_data PAGE='1:27363' 
 from disk='[备份文件]'