sql >> データベース >  >> RDS >> Sqlserver

C#でのSQLServerストアドプロシージャの非同期呼び出し

    SqlCommandBeginExecuteNonQueryを使用してコマンドを非同期で実行できます およびEndExecuteNonQuery 。後者は完了するまでブロックします。ただし、これではバックアップの進行状況に関するサーバーからの進行状況は報告されません。マーキーの進行状況バーを使用します。

    EndExecuteNonQueryを回避するには UIをブロックしないように(処理方法によって異なります)、バックグラウンドスレッドが必要になります。これを使用する場合は、BeginXXXを使用しない方がよいでしょう。 EndXXX メソッドを実行し、バックグラウンドスレッドで同期的に実行します-BackgroundWorker これに最適です。

    EndXXXでブロックする代わりに、UIでバックグラウンドスレッドを使用しないようにするため コールバックを登録し、結果のイベントを処理する必要があります(EndXXXを呼び出す) このイベントハンドラーでは、ただしすぐに戻ります)。

    更新: コメントによると、SQLコマンド/接続関連のものへの非同期呼び出しの場合、接続文字列にできるだけ多くを指定する必要があります:

    http://www.connectionstrings.com/sql-server-2008

    Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
    

    または、接続文字列ビルダーを使用したコード:

    builder.AsynchronousProcessing = true;
    


    1. PHPMySQLデータベース接続

    2. GROUPBY式のヘルプではないOracleSQLGROUP BY

    3. sql-存在しない値を返す単一のクエリ

    4. CAPIを使用してMySQLクエリのタイムアウトを設定する方法