Async SqlComman の問題
-
24-09-2019 - |
質問
タイムアウトに問題があります。アプリを通じてコマンドを実行するとタイムアウト例外がスローされますが、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 である場合は、コマンドが実際に終了したことをほぼ即座に示唆します。
所属していません StackOverflow