25

使用 SqlCommand 对象时,如何确定将多长时间用作超时?

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

cmd.CommandTimeout = 60;

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

我怎么知道什么最适合我的应用程序?

4

5 回答 5

42

似乎人们对这是秒还是毫秒感到困惑。该文档指出超时以秒为单位。对于大多数查询来说,1 分钟的超时似乎是合理的。8 小时以上的超时似乎不合理。

您是否有预计需要超过一分钟的查询?如果是这样,请将其提高到您期望的值,该值高于您在一切正常时看到的任何值,但不要太高以至于需要永远提醒您注意问题。(例如,您可能会从 1 分钟缩短到 5 分钟。)

于 2011-08-11T09:41:27.193 回答
6

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

如果您的数据库在同一台机器上,您通常不必更改它。试试看:如果您遇到连接超时,请增加该值。

于 2011-08-11T09:43:37.547 回答
5

您应该计算最长可能查询需要多长时间,并可能将该值乘以 1.5 以处理服务器过载、网络流量等...

于 2011-08-11T09:42:19.250 回答
2

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

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

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

于 2011-08-11T09:42:25.743 回答
1

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

所以,设置的值CommandTimeout完全取决于你的应用和需求,如果你知道你正在执行的sql语句或存储过程只需将其设置为大于60的值,否则60秒似乎足以等待完成任何声明。

于 2011-08-11T09:46:03.507 回答