【问题标题】:Is there a way to get Stored Procedures to constantly refresh their Timeout Expiration TSQL?有没有办法让存储过程不断刷新他们的 Timeout Expiration TSQL?
【发布时间】:2010-08-11 16:44:06
【问题描述】:

我写了一个相当复杂的存储过程,运行大约需要 2 分钟(Is 是一个更新语句)。但是,在这 2 分钟的时间内,存储过程超时。我想知道是否有办法刷新存储过程超时过期,这样我就不必将服务器超时从 30 秒更改。我不能真正打破存储过程,因为它已经是这样运行多个较小版本的存储过程是一种脱离表。最好在存储过程中的某处说,例如每次存储过程成功更新一行时,刷新计时器,以便它可以更新所有行而不会超时。任何意见,将不胜感激。谢谢。

【问题讨论】:

  • 向我们展示您的 proc,也许我们可以帮助您优化它,这样就不会花这么长时间。
  • 如果你是逐行更新,你不应该这样做

标签: tsql stored-procedures timeout


【解决方案1】:

没有。命令超时纯粹是a client side thing

CommandTimeout 会发生什么, SQL Server 将继续前进 执行查询但不知道 关于超时的任何事情,以及当 客户端确定查询是 时间太长,它会发送一个 给服务器的消息告诉它 取消查询。所以,自从 超时值纯粹是客户端 事情,你将无法改变它 在 SQL Server 中。

您需要在调用代码中增加CommandTimeout

【讨论】:

  • 我明白了,这很不幸。感谢您的回复。
  • @SamF - 你怎么称呼它?你能增加超时吗?如果不能,你可以异步调用它吗?
  • 啊,我明白了,我可以自己设置超时值,然后再将其设置回原来的值(.NET)
  • @Sam F - 是的。在.NET 中,这是您需要的SqlCommand.CommandTimeout 属性。
猜你喜欢
  • 2011-08-01
  • 1970-01-01
  • 2018-09-30
  • 2021-05-07
  • 2023-03-27
  • 1970-01-01
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多