質問

タイムアウトに問題があります。アプリを通じてコマンドを実行するとタイムアウト例外がスローされますが、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));

よろしく

役に立ちましたか?

解決

の代わりにコマンドタイムアウトを増やします( SqlCommandオブジェクト.CommandTimeout の)デフォルトでは、これは30秒です。

他のヒント

接続文字列のデフォルトのタイムアウトは 15 秒です。見てください MSDN.

接続文字列のタイムアウトを変更して、持続時間を長くすることができます (connection timeout=600, 、10 分間のタイムアウト)。

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

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

アップデート:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top