1.索引错误产生的现象
goods_in_out的 DBCC 结果。 消息 8935,级别 16,状态 1,第 1 行 表错误: 对象 ID 27147142,索引 ID 1,分区 ID 72057594040025088,分配单元 ID 72057594044350464 (类型为 In-row data)。页 (1:191461) 上的上一页链接 (1:191462) 与父代 (1:53785) 槽 245 所预期的此页的上一页 (1:191458) 不匹配。 消息 8977,级别 16,状态 1,第 1 行 表错误: 对象 ID 27147142,索引 ID 1,分区 ID 72057594040025088,分配单元 ID 72057594044350464 (类型为 In-row data)。没有遇到页 (1:191462) 的父节点。 对象 \'goods_in_out\' 的 5193 页中有 172446 行。 CHECKTABLE 在表 \'goods_in_out\' (对象 ID 27147142)中发现 0 个分配错误和 2 个一致性错误。 对于由 DBCC CHECKTABLE (zyhadm.dbo.goods_in_out)发现的错误,repair_rebuild 是最低的修复级别。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
表 table 中实际存在某条数据,但是当查询使用了错误的索引时,数据无法查到。
2.解决方法
表 table 的索引错误无法避免,而且产生时间不确定。所以需要定期维护索引。
1)第一种,可以通过重新生成索引进行修复,【右键索引】→【编写索引脚本为】→【DROP 和 CREATE 到】→【新建编辑器窗口】,执行SQL ;
2)第二种,通过 DBCC CHECKTABLE(\'table\')查看表的问题,如果出现一致性错误时,通过命令修复表
首先将数据库设置成单用户模式
执行 DBCC CHECKTABLE (\'table\',repair_rebuild)
然后将数据库设置为多用户模式。