0

Entity Frameworkを使用していて、タイムアウトについていくつか質問がありました。

この次の記事http://blogs.msdn.com/b/khen1234/archive/2005/10/20/483015.aspxに よると

A client signals a query timeout to the server using an attention event. An attention 
event is simply a distinct type of TDS packet a SQL Server client can send to it. 

したがって、SQL Server自体(ガバナーなし)は、発行されたコマンドのタイムアウトを尊重し、タイムアウトの期限が切れた後にそれを強制終了することはできません。例として、次のクエリを取り上げます。

var x = objectContext.Employees.Select(e => e.FirstName);

クエリを発行します-クエリの完了に40秒かかり、デフォルトのコマンドタイムアウトが30秒であると仮定した場合。注意イベントはいつトリガーされますか?

A)30秒で?

B)40秒後(クエリが40秒後に戻ったとき、EFはデフォルトよりも大きいかどうかを確認し、例外をスローします)?

ここでは、コードもSqlExceptionをスローし、アテンションイベントを自動的にトリガーすると想定しています。

4

1 に答える 1

1

30秒で。タイムアウト量を「待機時間は...」と考えてください。

タイムアウトにより、がトリガーされSqlExceptionます。「アテンションイベント」はそれよりも低いレベルです。

クライアント(EFなど)はクエリを追跡し、タイムアウト後、サーバーに結果に関心がなくなったことを通知し、例外をスローします。クライアントコードは、その例外を適切に処理する必要があります。

于 2012-08-02T12:33:38.080 に答える