8

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

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

私はdtsでこれを行うことができます。トランザクションSQLでそれを行う方法はありますか? または、バッチ スクリプト (vbs や powershell など) でそれを行う方法はありますか?

4

4 に答える 4

5

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

あなたの状況で CLR sproc を使用できますか? もしそうなら、私はこの回答を編集して詳細を表示します。

于 2008-11-10T14:20:34.027 に答える
4

sp_開始_ジョブ

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

これはまさに私たちが探しているものではありませんが、結果は同じです。サブジョブのジョブ ステータスをテストする場合は、sproc 3 の条件付き開始も実装できます。

一度にすべてを使用できない場合、8 コアの意味はありません。

于 2009-03-10T01:28:51.613 に答える
1

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

単一の SP 内の単純な CRUD ステートメントを使用すると、SQL S. が並列実行できるステートメントを非常にうまく判断して実行できることがわかりました。私は、SQL S. が 2 つの SP を並行して実行するのを見たことがありません。両方が T-SQL ステートメントから順次呼び出された場合、それが可能かどうかさえわかりません。

では、DTS は本当にそれらを並行して実行するのでしょうか。単純にそれらを順番に実行し、最後の SP が正常に終了した後に 3 番目の SP を呼び出す可能性があります。

本当に並行して実行するのであれば、おそらく DTS を使い続ける必要がありますが、DTS パッケージを呼び出した場合、たとえば 10 個のヘビーデューティー SP を並行して呼び出すとどうなるか知りたいです...私はしなければならないかもしれません自分でそれを学ぶためのいくつかのテスト:D

于 2008-11-10T17:20:05.067 に答える
0

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

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

于 2009-01-23T18:24:24.503 に答える