SQL Server超时故障排除

Chr*_*ris 7 c# sql-server

我有一个网络服务,运行良好,没有修改几年了.突然今天它决定它不想运行,并抛出SQL超时:

System.Data.SqlClient.SqlException:超时已过期.操作完成之前经过的超时时间或服务器没有响应.

有趣的是,此Web服务与数据库位于同一服务器上,如果我将查询从SQL跟踪中拉出并在管理工作室中运行,则会在一秒钟内返回.但是,当从Web服务调用时,它会在30秒后超时.我正在使用企业库连接到数据库,所以我无法想象随机开始失败.

我不太确定突然让它停止工作的原因.我已经回收了它所在的应用程序池,甚至重新启动了我看到它正在使用的SQL进程.相同的行为.我可以解决这个问题吗?

更新:米奇钉了它.一旦我在sproc定义中的"AS"关键字之前添加了"WITH RECOMPILE",它就恢复了生机.好样的!

Mit*_*eat 4

您描述的症状 99.9% 肯定是由于错误缓存的查询计划造成的。

请参阅这些答案:

其中包括重建索引和确保统计数据是最新的建议作为起点。

您是否计划并启用了定期索引维护作业?

规范参考是:Slow in the Application, Fast in SSMS?