2014-12-03 83 views
0

我正在運行SQL Server 2008,並且我有3個代理作業設置爲一個接一個地運行,因爲第二個成功取決於第一個,等等。如何監視被觸發後運行的SQL Server代理作業

我擁有的每一份其他工作都是獨立的,我使用包含MSDB..sysjobhistory run_status字段的腳本進行監控。

我想知道是否有一種方法可以專門查找某一天從未開始的所有工作。我知道我可以用另一種方式來思考問題,並說如果工作1失敗,工作2就不可能運行;然而,我正在尋找更通用的解決方案,以防萬一我需要創建其他鏈接類似的工作,我不必在我的夜間報告中硬編碼更多的邏輯。

歡迎任何建議!

+2

將它們設置爲單個作業中的步驟過於繁瑣嗎?如果「job1」失敗,那麼「job2」甚至不會嘗試運行,並且您將知道是否因失敗狀態而失敗。 – 2014-12-03 18:59:59

+0

@ Dave.Gugg在這種情況下,我希望它很簡單。我的第一份工作有一些Java代碼也需要執行,而我的第二份工作只有在SQL和Java都完成之後才能開始。 – wmarquez 2014-12-03 19:52:11

回答

0

MSDB..sysjobservers表爲您的服務器中的每個代理作業保存一條記錄,並且包含字段last_run_date,可以很容易地判斷哪些作業在過去24小時內未運行。我的查詢看起來像這樣

SELECT A.name    AS [Name] 
     ,@@servername   AS [Server] 
     ,'Yes'    AS [Critical] 
FROM MSDB.dbo.sysjobs A 
INNER JOIN MSDB.dbo.sysjobservers B ON A.job_id = B.job_id 
WHERE A.name LIKE '2%SPRING%' 
     AND DATEDIFF(DAY, CONVERT(DATETIME, CONVERT(CHAR(8),B.last_run_date)), GETDATE()) > 1) 
相關問題