SqlCommand对象,CommandTimeout属性应设置多长时间?

25

如何在使用SqlCommand对象时决定要使用的超时时间?

在我正在处理的代码部分(由其他人编写),我看到了以下内容:

cmd.CommandTimeout = 60;

我认为这相当简短。但是,我在论坛上看到一些人谈论将其设置为30000,这似乎太长了。

我应该如何知道什么对我的应用程序最合适?

5个回答

43

看起来人们对此是秒还是毫秒有点困惑。 文档 显示超时时间以秒为单位。对于大多数查询来说,1分钟超时时间似乎是合理的。8小时以上的超时时间则不太合理。

您是否有预期需要超过1分钟的查询?如果是这样,请将超时时间设置为您期望的值,该值应高于正常情况下可能出现的任何值,但不要太高以至于无法及时提示您存在问题。(例如,您可以从1分钟增加到5分钟)


6

5
你应该计算最长的可能查询需要多长时间,然后乘以1.5来处理服务器超载、网络流量等问题...

2

这是以秒为单位的时间,完全取决于实际SQL命令所需的时间。

例如,我们大多数命令运行sproc,完成时间不应超过30秒,但有几个命令运行时间更长,因此它们具有自己的高值超时时间。

您需要分析平均例程所需的时间,然后相应地调整超时时间,并记得留出变量(如延迟)的空间。


1

SqlCommand.CommandTimeout 用于设置在终止尝试执行命令之前的等待时间,这意味着您想要给您的 SqlCommand 执行特定的 SQL 查询或存储过程并等待其完成的时间。如果命令在指定的时间内未完成,则会被终止并抛出异常。

因此,设置 CommandTimeout 的值完全取决于您的应用程序和要求,如果您知道正在执行的 SQL 语句或存储过程将花费较少的时间,则将其设置为大于60的值,否则等待60秒似乎足以完成任何语句的执行。


将该值增加到5分钟会有什么后果?我正在开发一个为WPF客户端提供服务的WCF应用程序。 - Joy George Kunjikkuru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接