在使用SqlCommand对象时,如何确定使用超时的时间长度?
在我正在处理的部分代码上(由其他人编写)我有:
cmd.CommandTimeout = 60;
我认为这很短。但是,我在论坛上看到一些人谈论将它设置为30000,这似乎太长了。
我怎么知道什么对我的申请最好?
答案 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秒似乎足以等待任何陈述的完成。