26

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

私はSqlHelper.ExecuteNonQuery()それを実行するために使用しているだけで、接続を開くなどの処理を任せています.

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

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

4

2 に答える 2

40

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

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

于 2008-08-26T06:08:57.877 に答える
14

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

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
于 2008-08-26T06:14:18.813 に答える