私が管理している Web アプリケーションで SQL タイムアウトの原因をデバッグしようとしています。私は C# コード ビハインドのソース コードを持っているので、どのコードが実行されているかを正確に把握しています。タイムアウトした SQL コードを実行する行までアプリケーションをデバッグし、SQL プロファイラーで実行されているクエリを監視しました。
このクエリを Web から実行すると、30 秒後にタイムアウトになります。ただし、プロファイラーに表示されているとおりにクエリをカット アンド ペーストし、SSMS に入れて実行すると、ほぼ瞬時に返されます。Web が使用している接続で ARITHABORT が OFF に設定されているという問題を追跡しました (つまり、SSMS セッションで ARITHABORT を OFF にすると長時間実行され、ON に戻すと実行されます)。非常に迅速に)。ただし、ARITHABORT の説明を読むと、当てはまらないようです...単純な SELECT のみを実行しており、演算はまったく実行されていません..WHERE 条件を使用した 1 つの INNER JOIN のみ:
ARITHABORT OFF がこのコンテキストでこの動作を引き起こすのはなぜですか?? SSMS からその接続の ARITHABORT 設定を変更する方法はありますか? SQL Server 2008 を使用しています。