处理存储过程中的超时

时间:2010-08-25 06:59:43

标签: sql-server sql-server-2008

我有一个执行几个查询的存储过程。由于超时,每个查询都可能失败。

我仍然想继续执行其他查询。 这可能吗?尝试抓住超时工作吗?

我可以为每个查询提供不同的sps,但这会使应用程序更复杂。

4 个答案:

答案 0 :(得分:4)

如何运行SQL?

SQL本身没有超时,因此您无法将其描述为问题。

超时总是在连接级别/连接应用程序上处理。 SQL Server很高兴SQL调用持续数小时或数天。

因此,除非您执行某些“有趣”/异常,否则SP中的查询不会超时 - 调用该过程的连接将超时,从而回滚事务。

答案 1 :(得分:1)

存储过程中的查询没有超时 - 正在执行sproc的sql批处理超时 - 所以不,你不能'捕获'然后处理超时。

答案 2 :(得分:1)

如果您经常遇到超时,那么修复方法是对查询进行性能调整,不要试图跳过超时并转到下一个查询。

超时通常是查询设计错误(第1号原因),数据库设计错误(第2号原因)或设备不足的标志。这三个都是可以修复的。所以解决它们。

答案 3 :(得分:0)

简答:不。超时就像您在SSMS中取消查询一样:CATCH将无法捕获它。我写了一个罐头答案:Your TRY block may fail, and your CATCH block may be bypassed