2011-08-11 40 views
20

SqlCommandオブジェクトを使用しているときにタイムアウトとして使用する時間を決定するにはどうすればよいですか?私が働いているコードの部分にSqlCommandオブジェクト、CommandTimeoutの時間はどのくらいですか?

私が持っている(他の誰かによって書かれた):私はかなり短いと思い

cmd.CommandTimeout = 60; 

。しかし、フォーラムに参加している人々の中には、それを30000に設定することについて話している人もいます。

私のアプリケーションに最適な方法を知るにはどうすればよいですか?

答えて

37

人々は、これが秒かミリ秒かどうか混乱しているようです。 documentationは、タイムアウトが秒単位であることを示します。ほとんどのクエリでは、1分のタイムアウトが妥当と思われます。 8時間以上のタイムアウトではありません。

1分以上かかると思われるクエリがありますか?そうであれば、すべてが適切に機能していると見えるものよりも高いと予想される値に上げてください。ただし、いつまでも問題が発生していると警告するほど高くはありません。 (たとえば、5分に1分から行くかもしれません。)

5

あなたはなど、可能な限り長いクエリを取ると、おそらくサーバーの過負荷を処理するために1.5で、その値を乗算し、ネットワークトラフィックますどのくらいの時間を計算する必要があります...

1

これはSECONDSであり、実際のSQLコマンドがどのくらいの期間かかるかによってまったく異なります。

たとえば、ほとんどのコマンドはsprocを実行しますが、完了までに30秒以上かかることはありませんが、かなり長く実行されるカップルがあります。つまり、独自の値の高いタイムアウトがあります。

あなたはなど、あなたのルーチンはそれに応じてタイムアウトを調整し、待ち時間のような変数のための余地を残すことを覚えかかる時間平均でプロファイルする必要があります

1

SqlCommand.CommandTimeoutは、コマンド実行の試行を終了するまでに待機時間を設定するために使用されます。つまり、SqlCommandに特定のSQLクエリまたはストアドプロシージャを実行して完了するまで待機する時間を意味します。コマンドが指定された時間内に完了せず、終了すると例外がスローされます。

したがって、CommandTimeoutの値を設定することは、アプリケーションと要件によって異なります.SQL文またはストアドプロシージャ60以上の値に設定するよりも少し時間がかかります。それ以外の場合は、60秒でいずれかのステートメントの完了を待つだけで十分です。

+0

この値を5分に増やすことには何らかの影響がありますか?私はWPFクライアントを提供するWCFアプリケーションを開発しています。 –