我有一个执行几个查询的存储过程。由于超时,每个查询都可能失败。
我仍然想继续执行其他查询。 这可能吗?尝试抓住超时工作吗?
我可以为每个查询提供不同的sps,但这会使应用程序更复杂。
答案 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