15

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

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

4

3 回答 3

15

增加超时 = BAD
修复查询 = GOOD

我不确定所涉及的所有细节,但通常以下适用:

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

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

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

于 2009-05-08T16:14:55.210 回答
10

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

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

于 2009-05-08T15:20:14.030 回答
3

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

这是一篇关于代码项目的文章。

于 2009-05-08T15:21:45.477 回答