質問

長時間実行される SQL ステートメントを実行したいのですが、接続文字列の "timeout=" 句に何を入力しても、常に 30 秒後に終了するようです。

ただ使っているだけです SqlHelper.ExecuteNonQuery() それを実行し、接続のオープンなどを処理させます。

タイムアウトをオーバーライドしたり、SQL サーバーがタイムアウトを無視したりする可能性のあるものは他にありますか?クエリに対してプロファイラーを実行しましたが、Management Studio で実行した場合とコード内で実行した場合とで、トレースの表示に違いはありません。

Management Studio はクエリを約 1 分で完了しますが、タイムアウトを 300 または 30000 に設定しても、コードは依然として 30 秒後にタイムアウトします。

役に立ちましたか?

解決

接続文字列でタイムアウトを設定するために何を使用していますか?記憶によれば、これは「ConnectionTimeout」であり、実際にかかる時間にのみ影響します。 接続する サーバーに。

個々のコマンドには、探しているものとなる個別の「CommandTimeout」があります。ただし、SqlHelper がそれをどのように実装するかはわかりません。

他のヒント

接続文字列のタイムアウトに加えて、 SQL コマンドの timeout プロパティを使用してみてください。以下は、SqlCommand クラスを使用した C# サンプルです。同等のものが、使用しているものに適用される必要があります。

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top