【问题标题】:Setting query timeout on a stored procedure in SQL Server 2005在 SQL Server 2005 中对存储过程设置查询超时
【发布时间】:2009-09-01 00:18:55
【问题描述】:

有谁知道如何设置存储过程的超时时间?在 NET 上找到了一些示例,例如 sp_configure 'remote Query Timeout', 5,但这不起作用。还发现了一些命令“DBPROP_COMMANDTIMEOUT”和“DBPROP_GENERALTIMEOUT”,但我不知道它们是否适合使用,如果适合,如何在我的事务 SQL 代码中使用它们。

【问题讨论】:

    标签: sql sql-server stored-procedures


    【解决方案1】:

    正如 Chris Tybur 所说,您不能在存储过程中或在 SQL Server 上对存储过程进行查询超时

    CommandTimeout 是一个客户端概念:客户端将在一定时间后中止查询。存储过程没有死人的计时器或机制来中止自身/或任何查询)。 SQL Server 将允许查询永远运行。

    Remote Query Timeout”就是:当 SQL Server 进行远程调用时超时,当 SQL Server 本身是另一个服务器的客户端时。它在描述中说:

    此值适用于传出 由数据库发起的连接 引擎作为远程查询。这个值 对收到的查询没有影响 数据库引擎。

    最近有一个很好的问题:timeout setting for SQL Server

    【讨论】:

      【解决方案2】:

      我从未听说过为在服务器端执行存储过程设置超时。通常您会为在您使用的数据提供者(例如 ADO.NET)中运行该过程的命令指定超时时间。

      【讨论】:

        【解决方案3】:

        等等 - 真正的问题是,“你想阻止什么正在发生?”每个人都专注于服务器端、客户端,但实际上我们不知道您为什么要问这个问题(这很重要)。

        还有另一个“为什么”:为什么要在“存储过程”上设置超时?为什么不是视图、函数或查询?您是否出于特定原因使用术语“存储过程”,或者您只是对学习如何在 T-SQL 中设置超时感兴趣?

        我问是因为我想知道您是否有锁定问题,也许 SET LOCK_TIMEOUT 1000 或 WITH(NOLOCK) 可能是您真正需要的。没有更多信息,虽然我不能说。如果您可以就您询问的原因、正在发生的事情以及在达到“超时”时您最终希望发生的事情向我们提供更多反馈,也许我们可以提供更多帮助。

        底线:是的,您可以在 T-SQL 中设置超时,是的,您可以使用 T-SQL 停止执行存储过程。但我不太了解您想就去哪里寻找建议或为您提供更多信息。我有点害怕我已经说太多了:)

        【讨论】:

          【解决方案4】:

          article 很好地解释了查询超时以及它们如何仅是客户端概念。您可以在 SQL Server 管理工作室中的工具|选项菜单中设置查询超时。

          【讨论】:

            【解决方案5】:

            您必须在客户端执行存储过程时设置超时。就 SQL Server 而言,它将让存储过程永远运行,除非被告知取消它。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多