【问题标题】:System.Data.SqlClient.SqlException (The wait operation timed out) when debugging onlySystem.Data.SqlClient.SqlException(等待操作超时)仅在调试时
【发布时间】:2022-01-11 23:43:04
【问题描述】:

即使在调试时,代码也适用于较小的查询。我尝试了一些更大的查询,它适用于服务器/实时版本,但在使用 Visual Studio 进行调试时不起作用。我用 SSMS 尝试了相同的查询,它运行良好,速度也很快。

查询是通过存储过程进行的:

using (SqlConnection conn = new SqlConnection(CONNECTION_STRING))
{
   partialReport = conn.Query<MonthlyReporting>("PartialReport", new { ClassLevel = (int)instruct, StartDate = startDate, EndDate = endDate, IncludeMarried = includeMarried }, commandType: CommandType.StoredProcedure).ToList();

   // program does stuff here
}

完整的异常细节是:

System.Data.SqlClient.SqlException
HResult=0x80131904
消息=执行超时已过期。在操作完成之前超时时间已过或服务器没有响应。

Source=.Net SqlClient 数据提供者

堆栈跟踪:
无法评估异常堆栈跟踪

内部异常 1:
Win32Exception: 等待操作超时

服务器和调试版本的代码是相同的,调试数据库与服务器/实时数据库相同(尽管早了几天)。同样,CONNECTION_STRING 不同,分别指向调试/实时数据库。

再一次,即使在使用较小的查询进行调试时,这也确实有效。

【问题讨论】:

标签: c# sql-server visual-studio


【解决方案1】:

我基本上什么都不做。我在代码的不同部分遇到了同样的问题,但我在错误后按了继续。我刷新了几次页面,看看是否与出现错误所用的时间有任何一致性。我这样做是因为我尝试更改连接超时但没有成功(刷新是使用我原来的连接超时设置完成的)。刷新几次后,问题就消失了(在代码中的两个位置)。 我认为问题是当我将数据库从实时版本/服务器复制到本地调试版本时引起的。

【讨论】:

  • 建议增加SqlConnection.CommandTimeout的时长。
  • 我将连接字符串中的 Connect Timeout 属性从 30 更改为 120,但没有成功。我仍然收到错误消息。暴力刷新六次后,问题就消失了。仍然不确定根本原因。
猜你喜欢
  • 2015-02-02
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 1970-01-01
相关资源
最近更新 更多