1

次のシナリオがあるとします。SQL Server エージェントには、毎日午前 6 時に実行されるスケジュールされたジョブがあり、毎日正常に動作します。ある日の午前 5 時から午前 8 時までサーバーに障害が発生しましたが、サーバーが再び起動したときは、スケジュールされたジョブの実行より 2 時間遅れています。

ジョブが以前に実行されたはずであり、ある種の「Missed Schedule」ステータスを示していることを確認するにはどうすればよいですか?

アプローチ: &が に存在するEXEC MSDB.DBO.SP_GET_COMPOSITE_JOB_INFO @job_idことを実行して確認します。存在しない場合は、ジョブがスケジュールされたが実行されなかったことを意味します。このアプローチは正しいですか?last_run_timelast_run_time[msdb].[dbo].[sysjobhistory]

提案/コメントはありますか?

前もって感謝します。

4

1 に答える 1

0

私はちょうどこれを理解しようとしていた - すでに問題を解決しなければならなかった - 。人が考えるほど一般的な必要性ではないようです。とにかく、私が自分の小切手を書く旅に出ようとしていたとき、以下を見つけました。サーバー上で見つけてほしい仕事をキャッチしたという点で、うまくいっているようです。

あなたのアプローチの問題は、それがかなり迅速に繰り返されるジョブであるか、毎日実行されるが土曜日をスキップして月曜日にチェックする場合です。私にはこれを正しく行うように思えました。頻度を調べて、いつ実行する必要があるかのテーブルを作成し、履歴をチェックして、実行されたかどうかを確認する必要がありました。以下は長く、理解するのに時間がかかりますが、そうしているようです。

http://www.nuronconsulting.com/TemplateScripts_SQL_Agent_JobsJobScript_FindMissedJobs_sql.aspx

于 2014-03-12T18:01:27.200 に答える