zoukankan      html  css  js  c++  java
  • 一次SQLServer索引损坏问题的排查与修复

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

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

      "内部错误。文件 e:sql10_main_tsql tdbmsstorengdfsstartupdstream.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校验,没有异常,问题解决。

  • 相关阅读:
    一次函数(好难的一次函数)
    脱水缩合(大搜索)
    背单词
    仙人掌(cactus)
    LYK 快跑!(LYK别打我-)(话说LYK是谁)
    巧克力棒
    选数字(贪心+枚举)
    看程序写结果(program)
    np问题
    IUYYLIUIU
  • 原文地址:https://www.cnblogs.com/Vulpers/p/8777107.html
Copyright © 2011-2022 走看看