SQL Server 2012 ALTER 索引作业失败

Sun*_*nny 3 sql-server sql-server-2012 ola-hallengren

我们使用 Ola 的维护解决方案设置 ALTER Index 作业,作业失败并出现以下错误,作业失败并锁定, 在此处输入图片说明

Jos*_*ell 6

以下是针对您的问题的一些可能的解决方案:

选项 1:不要重建该索引

这是您在那里拥有的 30 GB 索引。您试图通过重建来解决什么可衡量的性能问题?尤其是在 5% 的碎片化时,这似乎是一项极其昂贵的操作(在系统资源和锁定方面),但收益却很少。

您可以在此处阅读有关为什么要放弃索引重建的一些非常有根据的意见:

这绝对是您最好、最简单的选择。这是本垒打。做这个。

选项 2:在线重建

索引重建需要 SCH-M 锁。如果您添加WITH (ONLINE = ON)到您的ALTER INDEX命令中,该锁将被推迟到重建操作的最后,这可能会增加任何阻止您的维护任务完成已释放其锁的可能性。

选项 3:识别阻塞查询

这可能是所有选项中工作量最大的。您可以在ALTER INDEX命令运行时运行 sp_WhoIsActive ,它应该会向您显示正在运行的其他内容,特别是它会向您显示阻止该ALTER INDEX命令获取其锁定的其他会话。那时,你有很多选择来处理这个问题:

  • 重新安排索引维护,使其不会与阻塞查询同时运行
  • 重新工作您的阻塞查询,以便它需要更少的锁/不同的锁/持有锁的时间更少(如果您需要帮助,您可以发布另一个关于执行计划详细信息的问题)
  • 重新安排阻塞查询,使其在您进行索引维护期间不运行