处理存储过程中的超时
问题描述:
我有一个存储过程执行几个查询。由于超时,每个查询都可能失败。处理存储过程中的超时
我还想继续执行其他查询。 这可能吗?试一试超时工作吗?
我可以offcourse每个查询具有不同的sps,但这会使应用程序更复杂。
答
如何运行SQL?
SQL本身没有超时,所以你描述的问题是不可能的。
超时总是在连接级别/连接应用程序上处理。 SQL Server很高兴能够持续数小时或数天的SQL调用。
所以,除非你做了一些“有趣”/不寻常的事情,否则SP中的查询不会超时 - 调用该过程的连接将超时并因此回滚事务。
答
存储过程中的查询不超时 - 正在执行sproc超时的sql批处理 - 所以不行,你不能'捕捉'然后处理超时。
答
简答题:没有。超时就像当你在SSMS中取消你的查询一样:CATCH不会捕获它。我写了一个罐头答案:Your TRY block may fail, and your CATCH block may be bypassed
答
如果您经常收到超时,修复是性能调整查询不尝试跳过超时并转移到下一个查询。
超时通常是错误的查询设计(数字1原因),数据库设计不良(数字2原因)或设备不足的标志。所有三个都是可以修复的。所以修复它们。