代码之家  ›  专栏  ›  技术社区  ›  Mathias F

处理存储过程中的超时

  •  0
  • Mathias F  · 技术社区  · 14 年前

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

    我仍然想继续执行其他查询。 这有可能吗?超时时,尝试捕捉是否有效?

    对于每个查询,我当然可以有不同的SP,但这会使应用程序更加复杂。

    4 回复  |  直到 8 年前
        1
  •  4
  •   TomTom    14 年前

    如何运行SQL?

    SQL本身没有超时,所以您所描述的问题是不可能的。

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

    因此,除非您做了一些“有趣的/不寻常的事情”,否则SP中的查询不会超时-调用过程的连接将超时,从而回滚事务。

        2
  •  1
  •   Will A    14 年前

    存储过程中的查询不会超时(执行存储过程的SQL批处理超时),因此,不能“捕获”然后处理超时。

        3
  •  1
  •   HLGEM    14 年前

    如果经常出现超时,修复方法是对查询进行性能优化,而不是尝试跳过超时并转到下一个查询。

    超时通常是查询设计不良(数字1原因)、数据库设计不良(数字2原因)或设备不足的迹象。这三个都是固定的。所以修复它们。

        4
  •  0
  •   A-K    14 年前

    简短回答:没有。超时就像在ssms中取消查询一样:catch不会捕获它。我写了一个封闭的答案: Your TRY block may fail, and your CATCH block may be bypassed