SQL Server 查询卡住,但无需等待即可运行

Dus*_*ine 4 database-performance sql-server-2012

我有一个 SSIS 包正在运行一个执行 SQL 任务,该任务调用一个 proc。我正在处理的查询很糟糕,是由供应商开发的,它实际上嵌套在几个过程的深处。除此之外,它使用父过程中的临时表以及两个嵌套NOT IN子查询。

目前无法重写,但问题更多的是确定可能导致问题的原因。正如前面提到的,该查询很差,但通常运行得很快,但现在卡住了。查看查询,dm_exec_requests我可以看到它处于状态RUNNING并且无需等待。我没有看到任何来自 I/O 的活动,也没有看到任何真正的 CPU 活动。

有没有办法确定查询实际发生了什么?

Rob*_*son 5

听起来可能存在死锁问题。要查看被阻止的 sys 进程(死锁)的列表,您可以运行以下命令:

从阻塞 > 0 的 sysprocesses 中选择 *

如果没有死锁,则可能是性能问题,我将通过 SQL Server Management Studio 中的探查器运行 SQL 跟踪。在这种情况下,您可以右键单击并执行存储过程,传入与从 SSIS 包传入的参数相同的参数。然后检查分析器并查看瓶颈在哪里。

问候,罗布

  • 这就是奇怪的事情。没有死锁,其他正在运行的进程为零。完全没有阻塞。我可以再次运行该过程,它会运行良好。执行计划还不错,它正在执行插入操作。我只是不知道什么会导致它停滞不前。这种情况大约每两个月发生一次,但没有真正的规律性。 (2认同)