2013-02-11 9 views
6

SQLジョブがスケジュールに従って実行されたかどうかを示すSQLクエリを作成しようとしています。例えば、ジョブが12:00 PMに実行される予定で、12:05 PMで実行されていない場合は、そのことを知りたいと思います。それを検出する最良の方法は何でしょうか?予定通りに実行されていないジョブを検出します。

これまで、SQLジョブを定期的に実行し、SQL Serverが実行していないことがありました。これを防ぐために、SQL Server 2008 R2に対してクエリを実行し、ジョブが実行されたかどうかを確認し、実行されていない場合はアラートをトリガーします。

ありがとうございました!

答えて

1

あなたはこの手順

sys.xp_sqlagent_enum_jobs 

文書化されていない手順を試すことができます仕事最後の実行日時を返します。

1

このクエリはジョブの実行の詳細を示します。

Select hist.run_date,hist.run_status,hist.run_time 
from msdb..sysjobs jb 
inner join msdb..sysjobhistory hist 
on jb.job_id = hist.job_id 
where jb.name = 'MyJob' 

としてSQLオンラインブックあたり http://msdn.microsoft.com/en-us/library/ms174997.aspx

run_status

ジョブ実行のステータス:

2 =リトライを成功

0 =失敗しました

1 =

3 =キャンセルしました

+1

エージェントがスケジュールジョブをスキップしたかどうか本当に知りたいです。このクエリーは、ジョブが成功したかどうかを教えてくれます。 – Martin

0

どのジョブでヒットがないかをよりよく知るにはこのクエリを実行してみてください。

select name from msdb.dbo.sysjobs where job_id not in (select job_id from sdb.dbo.sysjobhistory) and enabled = 1 

デフォルトでは、各ジョブは実行時に履歴を持つ必要があります。

関連する問題