SqlCommand对象,CommandTimeout的时长是多少?

时间:2011-08-11 09:38:22

标签: c# ado.net sqlcommand command-timeout

在使用SqlCommand对象时,如何确定使用超时的时间长度?

在我正在处理的部分代码上(由其他人编写)我有:

cmd.CommandTimeout = 60;

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

我怎么知道什么对我的申请最好?

5 个答案:

答案 0 :(得分:38)

似乎人们对这是秒还是毫秒感到困惑。 documentation表示超时以秒为单位。对于大多数查询,1分钟的超时似乎是合理的。 8小时以上的超时似乎不合理。

您是否有预期需要超过一分钟的疑问?如果是这样的话,将它提升到一个你期望高于你所看到的任何值的值,如果一切正常,但不要太高,以便永远提醒你一个问题。 (例如,您可能会从1分钟到5分钟。)

答案 1 :(得分:6)

默认值为30秒(http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx)。

如果您的数据库位于同一台计算机上,则通常无需更改它。 试一试:如果遇到连接超时会增加价值。

答案 2 :(得分:5)

你应该计算出最长可能查询的时间,并可能将该值乘以1.5来处理服务器过载,网络流量等...

答案 3 :(得分:1)

这是在SECONDS中,它完全取决于实际SQL命令可能需要多长时间。

例如,我们的大多数命令运行的sproc都需要不超过30秒才能完成,但有一些运行的时间要长得多,这意味着它们有自己的高值超时。

您需要分析您的例行程序平均需要多长时间,然后相应地调整超时,并记住为延迟等变量留出空间。

答案 4 :(得分:1)

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

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