2009-03-05 13 views
7

私は数年前に修正せずに正常に動作していたWebサービスを持っています。突然今日は機能したくないと判断し、SQLタイムアウトをスローします。SQL Serverのタイムアウトのトラブルシューティング

System.Data.SqlClient.SqlException:タイムアウトが切れています。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。

このWebサービスはデータベースと同じサーバー上にあり、SQLトレースからクエリを取り出して管理スタジオで実行すると、1秒未満で戻ることに注意してください。しかし、Webサービスから確実に呼び出されたときに、正確に30秒後にタイムアウトします。私はデータベースに接続するためにエンタープライズライブラリを使用しているので、ランダムに失敗し始めたとは想像できません。

私は突然何が働くのを止めることができるのかよく分かりません。私はそれがあるアプリケーションプールをリサイクルし、それが使用していたと見たSQLプロセスを再起動しました。同じ振る舞い。どのように私はこれを解決することができますか?

更新日:ミッチに釘付けされています。 sproc定義の "AS"キーワードの前に "RECOMPILE WITH"を追加するとすぐに、それは生き返りました。ブラボー!

+0

@Chris:最後の溝がなければRECOMPILEを付けないでください。 RECOMPILE FORを使用すると、はるかにターゲットが絞られます –

答えて

4

説明した症状は、間違ってキャッシュされたクエリプランが原因であると確信しています。

これらの答えをご覧ください。

インデックスを再構築し、統計を出発点として、最新であることを確認するためのアドバイスが含まれ

定期的なインデックスメンテナンスジョブをスケジュールして有効にしていますか?

カノニカルな基準は次のとおりSlow in the Application, Fast in SSMS?

+0

あなたは、私のヒーローです。 – Chris

1

は、任意の関連するインデックスを再構築。

1

統計情報を更新するには、プロファイラでクエリのオプション設定を確認します。 SSMSは異なる接続セットオプションを使用している可能性があります。

関連する問題