是什么原因导致LINQ to SQL中的Timeout过期SqlExceptions?

时间:2009-05-08 15:17:47

标签: c# sql-server sql-server-2005 linq-to-sql sqlexception

我的应用程序一直运行到Timeout Expired SqlExceptions。问题是这个查询只需要运行相当长的时间。我无法弄清楚这个异常发生在哪里。这是在数据库服务器上创建的超时还是在我的程序中发生?或者如果它们两者兼而有之,我该如何确定它是哪一个?

最后,如何延长超时时间?

3 个答案:

答案 0 :(得分:15)

增加超时= 不良
修复查询=

我不确定所涉及的所有细节,但一般来说,以下适用:

当查询运行缓慢时,请在管理工作室中执行以下操作:

  • 运行SET ShowPlan_All ON
  • 运行您的查询
  • 查看单词“scan”的输出。你的问题就在那里。

“扫描”=触摸每一行(表格或索引)。您想“扫描”电话簿寻找一个号码还是使用索引?

答案 1 :(得分:10)

您可能正在运行DataContext上的CommandTimeout设置。默认为30秒。

您需要做的就是在执行查询之前在DataContext上设置属性。

答案 2 :(得分:3)

这是偶然发生的,因为默认超时是30秒。您可以通过在连接字符串上设置Timeout属性来更改此设置。 Alternatley你可以在DataContext上设置它。

这是关于此问题的article代码项目。