2016-04-06 34 views
8

SQL Server 2008を使用しており、通常18時間以上実行され、多くの手順があるジョブがあります。私は検索して、実行中にジョブを変更するときに何が起こるかについての答えを見つけることができないようです。私は「ステップ2」位での新しいステップを挿入実行中にSQL Serverのジョブステップが変更されるとどうなるか

1):以下は、実行時に、今日私は仕事に加えられた変更の概要です。ジョブはすでにステップ15に入っていますので、次回ジョブが実行されるまでこのステップは実行されません。

2)私は、最後のステップ(ステップ#30)を削除しました。

3)ステップ29を「次のステップに進む」から「レポートの成功を終了する」に変更しました。

今日変更を行ったときにステップ#15が実行されていたため、最終ステップに加えた変更は、今日その時点に達したときに有効になるのですか、

また、私が#2の位置に新しいステップを挿入したという事実は、現在の実行に対してステップ順序に悪影響を及ぼしますか?

+0

次回の実行までは何も変わらないと思います。ジョブはすでにメモリにロードされて実行されています。しかし、私はこのアイデアをサポートするためのドキュメントを見つけることができません - なぜそれを試してみて調べてみませんか?たとえば、実行中に使用されていないテーブルに出力し、出力があるかどうかを確認するステップを最後に追加しますか? – Bridge

+0

実行中にジョブが実行されると、何も起こりません。それはそれを壊したり、変更や何かを実行し始めることはありません。それは次回の実行時にのみ有効になります。 –

答えて

8

それが終了し、現在は決定的な答えを持っていた後、私は仕事をチェックします。実行中のジョブの変更DOESは、ジョブの現在の実行に影響します。ジョブ履歴に基づいて、SQL Server 2008がジョブを処理する方法は、ステップ番号に基づいて一度に1ステップです。ジョブが実行されている間は、ステップはメモリにロードされず、他の方法で保存されません。私の特定のシナリオでは

、私は#2の位置にステップを追加しました。これにより、更新時にすべての後続のステップ番号が1ずつ増加しました。私はそれを更新したので、ジョブはステップ#15を実行していたので、ステップ#15は#16の更新後になりました。その結果、ステップ#15が終了すると、同じストアドプロシージャ(新しいステップ#16)が再度実行されました。私は仕事の最後のステップを削除するので、それはもはや仕事の一部として存在していた仕事はそのステップに到達していないとき

はまた、それは実行されませんでした。

最終行は、実行中にジョブを更新しないことをお勧めします。結果は予測可能ですが、ステップを2回実行するか、まったく実行しない限り、推奨されません。

0

私はSQL Managment Studio 2012 Service Pack 3を使用しています。答えはです。これはに依存しています。

  • Job #1は、3つのステップを持っていることを想像してみてください。
  • Step 3Job #2をトリガします。
  • Job #1は、私はそれはまだ「ステップ3」を実行したくないので、私はSELECT 1にコードを変更し、ラインEXEC msdb.dbo.sp_start_job job #2をコメントアウトStep 2
  • です。
  • ジョブ#1が終了Step 2Step 3Job #2をトリガします。

コードが変更されても効果がないのは、ジョブが既に実行されていて、スクリプトの独自のローカルコピーで実行されて以降のコード変更が影響を受けないためです。

関連する問題