使用 SqlCommand 对象时,如何确定将多长时间用作超时?
在我正在处理的部分代码(由其他人编写)上,我有:
cmd.CommandTimeout = 60;
我认为这很短。但是,我在论坛上看到有人在谈论将其设置为30000,这似乎太长了。
我怎么知道什么最适合我的应用程序?
使用 SqlCommand 对象时,如何确定将多长时间用作超时?
在我正在处理的部分代码(由其他人编写)上,我有:
cmd.CommandTimeout = 60;
我认为这很短。但是,我在论坛上看到有人在谈论将其设置为30000,这似乎太长了。
我怎么知道什么最适合我的应用程序?
似乎人们对这是秒还是毫秒感到困惑。该文档指出超时以秒为单位。对于大多数查询来说,1 分钟的超时似乎是合理的。8 小时以上的超时似乎不合理。
您是否有预计需要超过一分钟的查询?如果是这样,请将其提高到您期望的值,该值高于您在一切正常时看到的任何值,但不要太高以至于需要永远提醒您注意问题。(例如,您可能会从 1 分钟缩短到 5 分钟。)
默认值为 30 秒 ( http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx )。
如果您的数据库在同一台机器上,您通常不必更改它。试试看:如果您遇到连接超时,请增加该值。
您应该计算最长可能查询需要多长时间,并可能将该值乘以 1.5 以处理服务器过载、网络流量等...
这是在 SECONDS 中,它完全取决于实际 SQL 命令可能需要多长时间。
例如,我们的大多数命令运行的 sproc 应该不超过 30 秒才能完成,但是有一些运行时间更长,这意味着它们有自己的高值超时。
您需要分析您的例程平均需要多长时间,然后相应地调整超时,并记住为延迟等变量留出空间。
SqlCommand.CommandTimeout
用于在终止尝试执行命令之前设置等待时间,这意味着您希望给您SqlCommand
执行特定 sql 查询或存储过程并等待它完成的时间。如果命令未在指定时间内完成,它将被终止并抛出异常..
所以,设置的值CommandTimeout
完全取决于你的应用和需求,如果你知道你正在执行的sql语句或存储过程只需将其设置为大于60的值,否则60秒似乎足以等待完成任何声明。