【发布时间】: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 不同,分别指向调试/实时数据库。
再一次,即使在使用较小的查询进行调试时,这也确实有效。
【问题讨论】:
-
这是客户端超时。增加 SqlConnection.CommandTimeout 和/或对服务器上的查询执行进行故障排除。见docs.microsoft.com/en-us/sql/relational-databases/performance/…
-
您很可能在该服务器上遇到了缓慢的查询。请通过brentozar.com/pastetheplan 分享两台服务器的查询计划。还请edit 并将存储过程、表和索引定义添加到您的帖子中
标签: c# sql-server visual-studio