由于陷入死锁,重新索引作业失败,但它是凌晨 3 点运行的唯一进程..?

由于陷入死锁,重新索引作业失败,但它是凌晨 3 点运行的唯一进程..?

我在维护计划中有一个重新索引作业,我会在凌晨 3 点对给定数据库中的每个表运行该作业,因此它不会中断任何其他工作。

然而,它失败了,并报告原因是表死锁的受害者——我怎样才能找出除了它之外还锁定了表的原因?

答案1

您是否启用了死锁跟踪标志(1222 等)?这些标志将为您提供 SQL Server 的 ERRORLOG 文件(通常在日志目录中)中死锁的转储,从而帮助您找到问题的根源。请参阅http://msdn.microsoft.com/en-us/library/ms178104(v=SQL.90).aspx更多细节。

可以使用 为当前服务启用它DBCC TRACEON (-1, 1222)。但是,如果您希望跟踪标志成为永久更改,则需要将跟踪标志放到 SQL Server 的启动参数 ( -T1222) 上,然后停止并重新启动 SQL Server。

答案2

您还可以创建一个捕获死锁图的代理作业。请参阅:http://msdn.microsoft.com/en-us/library/ms186385%28v=SQL.90%29.aspx

相关内容