2013-02-11 45 views
6

我正在嘗試編寫一個SQL查詢,它告訴我SQL作業是否已根據其計劃運行或未運行。例如,如果一項工作計劃在中午12點運行,而我們是下午12點05分,但仍然沒有運行,我想知道這一點。什麼是最好的方法來檢測?檢測未按計劃運行的作業

它發生在過去我們有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

作業執行的狀態:

0 =失敗

1 =成功

2 =重試

3 =取消

+1

我真的很想知道代理是否跳過了計劃任務。此查詢會告訴我作業是否成功。 – Martin 2013-02-11 19:50:20

0

要更好地瞭解哪些工作沒有神經。嘗試運行此查詢。

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

默認情況下,每個作業在執行時應該有歷史記錄。