【发布时间】:2015-10-08 15:11:18
【问题描述】:
我正在运行一个使用 OdbcCommand 的 ASP.NET 4.0 应用程序。默认情况下,命令超时为 30 秒。当我运行我的网页时,我的查询错误并显示“SQL0666 - SQL 查询超出指定的时间限制或存储限制”。错误。 Execute Reader 行在执行时不到 2 秒就失败了,远小于 Command Timeout。我添加了一行将 CommandTimeout 设置为 300 秒并执行了代码。 Execute Reader 运行并在 15 秒内加载整个页面,再次远低于 Command Timeout 值。如果我运行更改添加的行以将命令超时设置为 30 秒,则代码将在 2 秒内出错,并出现与上述相同的错误。查询本身只有大约 15 行长,在 IDE 中运行只需几秒钟。
不到两秒就出错的原始代码
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData))
{
//do stuff
}
在 15 秒内运行的代码:
cmdData.CommandTimeout = 300;
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData))
{
//do stuff
}
在 2 秒内出错的代码:
cmdData.CommandTimeout = 30;
using (IDataReader reader = this._commandExecuter.ExecuteReader(cmdData))
{
//do stuff
}
以前有人遇到过这个问题吗?除了将超时设置为有效的值之外,您是否找到了解决方案?
【问题讨论】:
-
_commandExecuter是做什么的?只需返回cmdData.ExecuteReader()?为什么要抽象? -
我们使用抽象来允许对数据库进行模拟调用以进行单元测试。
标签: c# asp.net-mvc odbc