0

これについての質問がここにあります。ただし、私の場合、テーブルで長時間実行される挿入/更新を実行しているのはWindowsサービスであり、ASP.NETアプリケーションから操作をキャンセルする必要があります。上記のリンクで、Burnsys は SQL サーバー セッションを強制終了することを提案しています。それは本当に唯一の方法であり、これを行うための良い習慣ですか?

また、同じポーズセットで、誰かが SqlCommand.Cancel を使用してキャンセルできることを示唆しています。ただし、ASP.NET アプリケーションから Windows サービスのコマンドをキャンセルする方法がわかりません。

ご意見をお聞かせください。

貴重なコメントをお寄せいただきありがとうございます、Ashish

4

1 に答える 1

0

1)Windowsサービスまたはストアドプロシージャのコードを変更できる場合は、SQLサーバー上にテーブルを作成して、長時間実行されているタスクの状態を格納することをお勧めします。Windowsサービス(サービスで実行できるよりも)は、このテーブルにレコードを追加します。ASP.NETアプリケーションは、このテーブルを(手動で)監視して、実行中のプロセスを停止します。

引き続きSQLServer2005を使用している場合は、KillProcess(ProcessId)を引き続き使用できます。したがって、processIdをこのテーブルに格納すると、asp.netアプリケーションはkill processコマンドをSQLサーバーに送信できます(アクセス許可がある場合)。

2)Windowsサービスでホストされているサービスのプログラミング(たとえばwcf)インターフェイスがある場合は、LRタスクを非同期で実行し、このタスクをキャンセルするメソッドを追加することをお勧めします。ASP.NETアプリケーションは、このキャンセルメソッドを呼び出すことができます。

SqlCommand command = new SqlCommand();
            command.BeginExecuteNonQuery();

...
            command.Cancel();
于 2010-03-07T09:31:16.307 に答える