Linq to SQL でストアド プロシージャ呼び出しを実行するのに 4 分以上かかるときはいつでも、TimeoutException をスローしようとしています。
これが私のコントローラーのコードです:
public IEnumerable<Quality> Get(DateTime param1, DateTime param2, string param3)
{
var dc = new VideoDataContext(WebApplication.MonitorServer);
dc.CommandTimeout = 240;
List<Quality> cqs = dc.Vid_GetQualityForVideo(param1, param2,
param3).ToList();
return cqs;
}
何らかの理由で、コードは 4 分より長く (ずっと長く) 実行されますが、タイムアウト例外はスローされません。最後に、非常に大きなクエリに対してメモリ例外が発生します。
ストアド プロシージャにアクセスできないため、クエリを最適化することも表示することもできません。アプリケーションでタイムアウトしか検出できません。TimeoutException が発生しない理由を知っている人はいますか。
私のコードの他の場所では、非常によく似たコードがあり、別のデータベースを保持している別のサーバーで 4 分後にタイムアウトがスローされます。ここでは起こっていません。
データ チームに何かを変更するように依頼することはできますが、具体的に何が問題なのかを教えてください。
ありがとう!
編集:明確にするために、データを取得する前に見たのは永遠にかかり、それがクライアントに渡される大量のデータであることに気付きました。行数を検出する MVC アクション フィルターがあり、それが特定のしきい値 (現在は 10000) を超えている場合は、データセット全体ではなく、エラー メッセージのみをクライアントに渡します。私が実行しているクエリは、しきい値をはるかに超えて返されますが、完了するまでに 4 分以上かかります。