0

我在用于执行存储过程的 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 论坛,但到目前为止无济于事。

4

0 回答 0