你好,游客 登录 注册 搜索
背景:
阅读新闻

SQL2008R2下数据库修复一例

[日期:2017-09-19] 来源:Linux社区  作者:firstrose [字体: ]

某天访问某个数据库的时候,系统报错。连上去看了一下,服务器是SQL2008R2。由于有上次修复的经验,先使用DBCC查看数据库情况。

DBCC的返回:

XXXXXXXXXXX发生异常数据库 ID 7,页 (1:1350625) 已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。

消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 1195151303,索引 ID 2,分区 ID 72057594063421440,分配单元 ID 72057594074234880 (类型为 In-row data)。页 (1:387592) 缺少上一页 (1:1350625) 对它的引用。可能是因为链链接有问题。
消息 8928,级别 16,状态 1,第 1 行
对象 ID 1195151303,索引 ID 2,分区 ID 72057594063421440,分配单元 ID 72057594074234880 (类型为 In-row data): 无法处理页 (1:1350625)。有关详细信息,请参阅其他错误消息。
消息 8939,级别 16,状态 98,第 1 行
表错误: 对象 ID 1195151303,索引 ID 2,分区 ID 72057594063421440,分配单元 ID 72057594074234880 (类型为 In-row data),页 (1:1350625)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值为 12716041 和 -6。
消息 8976,级别 16,状态 1,第 1 行
表错误: 对象 ID 1195151303,索引 ID 2,分区 ID 72057594063421440,分配单元 ID 72057594074234880 (类型为 In-row data)。在扫描过程中未发现页 (1:1350625),但该页的父级 (1:1231035) 和上一页 (1:799122) 都引用了它。请检查以前的错误消息。

考虑到该数据库为生产数据库,且频繁读写,DBCC修复时间无法预计,故尝试手工修复。

首先查看ID为1195151303的对象:

select * from sys.objects where object_id='1195151303'

查询结果显示该对象是一个数据表,名称就是DBCC信息开始的表名。

 

注意到出错信息显示“索引 ID 2”,怀疑是索引损坏,查询该表所有索引

select * from sys.indexes where object_id='1195151303'

结果显示,该索引是一个非聚集索引兼主键。

删除并重建该索引,再次DBCC,未报告错误。

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-09/146985.htm

linux
相关资讯       SQL2008R2 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款