SQL Server超时故障排除

时间:2009-03-05 00:05:53

标签: c# sql-server

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

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

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

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

更新: Mitch 它。一旦我在sproc定义中的“AS”关键字之前添加了“WITH RECOMPILE”,它就恢复了生机。喝彩!

3 个答案:

答案 0 :(得分:4)

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

请看这些答案:

包括重建索引的建议,并确保统计数据是最新的起点。

您是否安排并启用了常规索引维护作业?

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

答案 1 :(得分:1)

重建任何相关索引。

答案 2 :(得分:1)

更新统计信息,检查分析器中查询的设置选项。 SSMS可能正在使用不同的连接集选项。