2014-12-03 3 views
0

SQL Server 2008을 실행하고 있고 세 번째 에이전트 작업이 다른 작업을 실행하도록 설정되어 있습니다.트리거 된 후에 실행되는 SQL Server 에이전트 작업을 모니터링하는 방법

다른 모든 직업은 독립적이며 MSDB..sysjobhistory run_status 필드를 포함하는 스크립트를 사용하여 모니터링합니다.

특정 날짜에 시작하지 않은 모든 작업을 구체적으로 찾을 수있는 방법이 있는지 알고 싶습니다. 나는 다른 방법으로 문제를 생각할 수 있으며, 작업 1이 실패하면 작업 2를 실행할 수 없다는 것을 알고 있습니다. 그러나 좀 더 일반적인 목적의 솔루션을 찾고 있습니다. 따라서 비슷한 방식으로 링크 된 다른 작업을 만들어야 할 때마다 필자의 야간 보고서에 더 많은 논리를 코딩 할 필요가 없습니다.

모든 의견을 환영합니다!

+2

단일 작업 내에서 단계를 설정하기는 너무 번거롭습니까? 그런 식으로 "job1"이 실패하면 "job2"가 실행되지 않고 상태가 실패했기 때문에 실패했는지 알 수 있습니다. –

+0

@ Dave.Gugg이 경우 간단합니다. 첫 번째 작업에는 실행해야하는 Java 코드가 있으며 두 번째 작업은 SQL과 Java가 완료 될 때까지 시작할 수 없습니다. – wmarquez

답변

0

MSDB..sysjobservers 테이블에는 서버의 모든 에이전트 작업에 대한 단일 레코드가 있으며 필드가있어 지난 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)