SQL Serverストアドプロシージャを並行して実行するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/277900

質問

次のようなことをしたい:

exec sproc1 and sproc2 at the same time
when they are both finished exec sproc3

これをdtsで実行できます。 Transact SQLでそれを行う方法はありますか? または、バッチスクリプト(vbsやpowershellなど)でそれを行う方法はありますか?

役に立ちましたか?

解決

sp _ start _ job

私は現時点で同様のことをしていますが、SSISまたは外部シェルの使用を避けることがわかった唯一の方法は、ロードルーチンを手動で「スレッド」に分割し、単一のマスターsqlagentジョブを起動することですスレッドの数だけsp _ start _ jobを実行します。その時点から、それらはすべて自律的に実行されます。

探しているものとは異なりますが、結果は同じです。サブジョブのジョブステータスをテストする場合、sproc 3の条件付き開始も実装できます。

一度にすべてを使用できない場合、8つのコアのポイントは何ですか?

他のヒント

(C#を使用して)独自のスレッドで最初の2つを呼び出し、両方が完了するまでブロックするCLRストアドプロシージャを作成してから、3番目を実行できます。

あなたの状況でCLR sprocを使用できますか?その場合は、この回答を編集して詳細を説明します。

両方のSPを並行して実行する必要が絶対にありますか?

単一のSP内で単純なCRUDステートメントを使用すると、SQL Sがどれを並行して実行できるかを決定する非常に良い仕事をすることがわかりました。 SQL Sを見たことがありません。2つのSPがT-SQLステートメントから連続して呼び出された場合、2つのSPを同時に実行します。それが可能かどうかさえわかりません。

今、DTSは本当にそれらを並列に実行していますか?単にそれらを順番に実行し、最後のSPが正常に終了した後に3番目のSPを呼び出すこともできます。

実際にそれらを並列に実行する場合は、おそらくDTSを使用する必要がありますが、DTSパッケージ呼び出し、たとえば10個のヘビーデューティーSPを並列に実行している場合の動作を知りたいと思います...自分でそれを知るためにいくつかのテストを行う必要があります:D

SSISを使用できます。この利点は、パッケージをSQL Serverに保存し、そこで簡単にスケジュールできることです。

PowerShellまたはほぼすべての外部スクリプト言語から、SQLコマンドラインosqlまたはsqlcmdを使用できます。この手法は、xp_cmdshellも使用してシェルアウトすることにより、SQL Serverでスケジュールするためにも使用できます。

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