超时已过期SQL Server 2008

时间:2017-05-10 08:27:33

标签: sql sql-server sql-server-2008

我在生产中有一个SQL Server数据库,它已经存在了2个月。不久之前,与其相关联的Web应用程序加载需要很长时间。有时它会说超时发生了。

通过运行命令“exec sp_updatestats”找到快速解决方法将解决问题。但我需要始终如一地运行(每5分钟一次)。

所以我用计时器创建了一个Windows服务,并在服务器上启动。我的问题是根本原因和可能的永久解决方案是什么?任何人吗?

以下是Activity Monitor

中最昂贵的查询
WAITFOR(RECEIVE TOP (1) message_type_name, conversation_handle, cast(message_body AS XML) as message_body from [SqlQueryNotificationService-2eea594b-f994-43be-a5ed-d9a47837a391]), TIMEOUT @p2;

2 个答案:

答案 0 :(得分:0)

要诊断效果不佳的查询,您需要:

  • 识别效果不佳的查询,例如通过应用程序日志记录,SQL Profiler跟踪被过滤以仅显示持续时间长于特定阈值的查询等...
  • 查询
  • Get an execution plan

此时,您可以开始尝试找出性能问题。

鉴于exec sp_updatestats修复了您的问题,可能是某些表的统计信息已过期(这是导致性能问题的常见原因)。如果是这种情况,那么您可以调整统计信息,或者至少只重建那些导致问题的统计信息。

值得注意的是,更新统计信息还会导致缓存的执行计划失效,因此您的问题与统计信息无关 - 您需要在查看解决方案之前收集有关性能较差的查询的更多信息。

您最昂贵的查询看起来就像是在等待邮件,即它在长时间运行的查询列表中,因为它的设计运行时间很长,而不是因为价格昂贵。

答案 1 :(得分:0)

感谢大家,我为我的问题找到了解决方案。它通过设置启用代理来启用我的sql服务器上的sql依赖模块,这是非常不同的那就是导致超时查询的那个,所以通过将其设置为false,现在一切正常。