我有一个运行执行SQL任务的SSIS包,它调用了一个proc。我正在处理的查询是讨厌的,由供应商开发,实际上是嵌套了几个proc的深层次。要添加它,它使用来自父proc的临时表以及两个嵌套的NOT IN
子查询。
目前无法重写,但问题更多的是确定可能导致问题的原因。像上面提到的那样,查询很差,但通常运行得很快,但现在却被卡住了。查看来自dm_exec_requests
的查询,我可以看到它处于RUNNING
状态且没有等待。我看不到来自I / O的活动,没有任何真正的CPU活动。
有没有办法确定查询实际发生了什么?
答案 0 :(得分:3)
听起来可能存在死锁问题。要查看阻塞的sys进程列表(死锁),可以运行以下命令:
从sysprocesses中选择*,其中阻止> 0
如果没有死锁,可能是性能问题,我会在SQL Server管理工作室中通过探查器运行SQL跟踪。在这种情况下,您可以右键单击并执行存储过程,传入与从SSIS包传入的相同的参数。然后检查分析器并查看瓶颈在哪里。
问候,Rob