我正在使用我的SqlCommand的CommandTimeout属性来执行存储过程。
using (SqlCommand command = new SqlCommand("_UpdateWorldeaseIDs", SqlC_SSuite))
{
command.CommandType = CommandType.StoredProcedure;
command.CommandTimeout = 600;
int rowsAffected = command.ExecuteNonQuery();
logger.log($": Rows affected = {rowsAffected}.", Log4NetExtension.Level.Info);
}
代码非常简单。该代码用于不指定CommandTimeout,因此将使用默认值30秒。看来此过程可能会(并非总是)花费超过30秒的时间,因此我们将其显着提高到600秒,并假设没有足够的时间。
奇怪的是,今天早晨,我们又收到了一封自动通过的失败电子邮件,内容为
“超时已到期。在完成以下操作之前已超时 操作或服务器没有响应。”
我检查了日志,以了解“过程开始”和“过程失败”日志之间经过了多少时间,基本上是30秒。下图显示了命令执行开始后约30秒,它失败了。
如果有人对可能发生的事情有任何建议,我将不胜感激。我确实尝试通读了大多数类似的SO问题和MSDN论坛,但到目前为止都无济于事。
谢谢。