得到当前运行的存储过程的spid

时间:2014-09-26 18:54:13

标签: sql sql-server stored-procedures

所以,我有一个proc本质上是一个动态查询生成器......根据用户设置的查询的复杂性,我可能会在查询可能需要20多分钟才能执行的情况下结束。

所以,在这个问题上加上我已经做过的一些事情来避免这些建议:

  1. 这是一个动态查询生成器,因此用户最终可以通过UI创建极其复杂的自定义查询。当我在日志中看到时间峰值时,我会添加索引等。
  2. 我正在更新此杠杆的表格统计信息。
  3. 我尽可能地优化了proc和关联表格......
  4. 我的网站上的超时当前设置得非常高(8分钟)以适应这种情况,但我想要做的就是将对此proc的长时间运行调用发送到队列以在应用程序外运行。

    我想知道的是,如果在调用存储过程或更具体的动态sql时,是否有办法获取为查询创建的spid的句柄?就像,我想,在SQL Server管理工作室中,停止按钮本质上是利用类似于此的功能来杀死当前正在运行的查询...我能够在较低的超时时间中止查询然后拥有它独立运行(甚至可能在不同的服务器上),只需通过电子邮件发送结果或其他内容......任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:3)

您可以使用 @@ spid

获取当前正在运行的spid

这是msdn链接http://msdn.microsoft.com/en-us/library/ms189535.aspx