一次SQLServer索引损坏问题的排查与修复

线上库执行一项数据变更操作时,一直提示"出现错误 8646。请记录该错误和时间,并与您的系统管理员联系。"

通过代码排查,最终确定是在执行某存储过程时触发了如下错误,并指明了位置是在某触发器的具体行:

  "内部错误。文件 e:\sql10_main_t\sql\ntdbms\storeng\dfs\startup\dstream.cpp 第 792 行中的字符串例程因 HRESULT 0x8007007a 的错误而失败。"

通过面向google开发,检索到有前辈遇到过类似问题,说明可能是索引损坏导致了此问题。相关链接[1][2]

为了验证,需要通过DBCC对疑似有问题的索引进行校验,脚本代码如下

declare @index_id int
set @index_id = (select index_id from  Sys.Indexes where name='[索引名]')
DBCC CHECKTABLE('[表名]',index_id=@index_id)

校验后,发现问题果然出在这个索引上,接下来就是重建该索引,脚本代码如下

ALTER INDEX [索引名] ON [表名] REBUILD

重建索引后,重新DBCC校验,没有异常,问题解决。

转载于:https://www.cnblogs.com/Vulpers/p/8777107.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值