【问题标题】:ODBC Command Errors on Execute with SQL0666 Error执行时出现 ODBC 命令错误并出现 SQL0666 错误
【发布时间】: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


【解决方案1】:

我曾经遇到过类似的问题,我们将超时设置为零来解决:

cmdData.CommandTimeout = 0;

【讨论】:

  • 这确实有效,但我想知道为什么在查询超时下加载整个页面时会出现此错误。
猜你喜欢
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
相关资源
最近更新 更多