【发布时间】:2011-01-12 05:57:00
【问题描述】:
我看到了与使用 LINQ to SQL 执行查询相关的超时问题。所以我制作了一个简单的控制台程序,但问题仍然存在,并非总是如此,但随机出现的次数足以让我担心。这几乎是我的整个程序:
public static TransactionDataContext DataContext = new TransactionDataContext();
static void Main(string[] args)
{
int year = ...;
int stateCode = ...;
DateTime minYear = new DateTime(year, 01, 01);
DateTime maxYear = new DateTime(year, 12, 31);
var volumes = DataContext.TRANSACTIONs.Where(p =>
p.STATE_NO == stateCode &&
p.TRANS_DATE >= minYear &&
p.TRANS_DATE <= maxYear).OrderBy(p => p.TRANS_DATE);
}
我数据库中的 TRANSACTION 表有 10M+ 条记录。在最后一个右大括号处设置断点后,我运行调试器。有时,扩展体积变量和结果视图会显示数据,有时它会显示“功能评估超时”。通过设置 DataContext.CommandTimeout 来延长超时似乎没有帮助,而且我认为这不是解决方案。
我的问题是为什么 LINQ to SQL 有这种限制,或者我做错了什么。
更新:从 Management Studio 运行 SQL 语句是可以的,所以我认为这不是索引问题。
【问题讨论】:
-
在调试时尝试运行 SQL Query Profiler,然后您可以找到正在执行的 SQL 查询,并通过查询分析器运行它以查看阻塞情况。
-
在调试器外部运行查询时是否有超时问题?调试器有自己的读取变量值的超时时间。
-
只是为了维护@Micheal的观点و
Do you have a timeout issue when the query is run outside the debugger?
标签: sql-server linq linq-to-sql