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

EnjoyFashion 2014-03-18 09:07:43

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 联机丛书。

...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnjoyFashion 2014-03-18
  • 打赏
  • 举报
回复
问题找到了。是主键聚集索引冲突,我把数据维护下就好了。谢谢你们的回复
唐诗三百首 2014-03-18
  • 打赏
  • 举报
回复
找最近的数据备份,尝试基于数据页的数据库恢复.

restore database YF_data PAGE='1:27363' 
 from disk='[备份文件]' 
KevinLiu 2014-03-18
  • 打赏
  • 举报
回复
1.修改到Emergency模式 2.修改到单用户 3。允许DBCC CHECKDB修复。 当然可以在修复之前把数据尽可能的倒出来,这样可以在修复之后比对数据的丢失情况。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧