0

タイムアウトに問題があります。アプリを介してコマンドを実行するとタイムアウト例外がスローされますが、SQL で直接実行するとタイムアウト例外は発生しません。

私のSPは、直接実行すると約11分かかります。この問題を解決するために、以下のコードを見つけましたが、正しく動作しません! beginExecute の直後に、IAsyncResult.iscomplete が true になります!!!!

問題はどこだ ?

IAsyncResult result = command.BeginExecuteNonQuery();

    int count = 0;
    while (!result.IsCompleted)
    {
        Console.WriteLine("Waiting ({0})", count++);
        System.Threading.Thread.Sleep(1000);
    }
    Console.WriteLine("Command complete. Affected {0} rows.",
    command.EndExecuteNonQuery(result));

よろしく

4

2 に答える 2

0

代わりに、コマンドのタイムアウト ( SqlCommand.CommandTimeout ) を増やしてください。既定では 30 秒です。

于 2010-04-04T08:04:07.493 に答える
0

接続文字列は、デフォルトで 15 秒のタイムアウトになります。MSDNを参照してください。

接続文字列のタイムアウトをより長く持続するように変更できます ( connection timeout=600、10 分のタイムアウトの場合)。

接続文字列の詳細については、このサイトを参照してください。

そうは言っても、データベースやストアド プロシージャの最適化を検討する必要があります。ストアド プロシージャの 11 分は非常に長いです。テーブルに正しいインデックスがありますか? ストアド プロシージャは最適な方法で作成されていますか?

アップデート:

正しいコマンドを使用していること、および結果が正しいことを確認しましたか? IsComplete が true であることは、コマンドが実際に終了したことをほぼ即座に示唆します。

于 2010-04-04T07:52:53.397 に答える