シナリオ
1 日を通して数分ごとに実行されるようにスケジュールされている特定の SQL エージェント ジョブがあります。
前のスケジュールからまだ実行されているため、次のスケジュールを逃す正当な時期があります。
時々、ジョブが「ハング」することがあります。これは失敗しません (ジョブがまだ停止していないため)。これが発生した場合、ジョブを手動で停止することができ、次回の実行時に正常に動作します。中断したところから再開するように設計されています。
一番効率の良い方法は…?
「JobX」という名前の SQL エージェント ジョブが現在実行されている時間を (秒単位で) 判断する方法が必要です。現在実行されていない場合は、ゼロを返すことができます。
このようにして、特定のしきい値を超えて実行されているジョブを停止できます。
xp_sqlagent_enum_jobs と sysjobhistory の組み合わせを使用できると思いますが、より良い解決策があるかどうかに興味があります...そして、残りの人が既に遭遇して回避した障害から利益を得ることができれば幸いです。