MSDB 데이터베이스에서 SQL Server 에이전트 작업 결과를 확인하는 쿼리에 대한 도움이 필요합니다.조인 된 결과에서 고유 한 결과 반환
SELECT CONVERT(VARCHAR(30), Serverproperty('ServerName')),
a.run_status,
b.run_requested_date,
c.name,
CASE c.enabled
WHEN 1 THEN 'Enabled'
ELSE 'Disabled'
END,
CONVERT(VARCHAR(10), CONVERT(DATETIME, Rtrim(19000101))+(a.run_duration *
9 +
a.run_duration % 10000 * 6 + a.run_duration % 100 * 10)/216e4, 108),
b.next_scheduled_run_date
FROM (msdb.dbo.sysjobhistory a
LEFT JOIN msdb.dbo.sysjobactivity b
ON b.job_history_id = a.instance_id)
JOIN msdb.dbo.sysjobs c
ON b.job_id = c.job_id
ORDER BY c.name
지금까지 너무 좋아하지만, 그들이 쿼리 때까지 실행 한 횟수에 따라 동일한 작업에 대한 여러 결과를 반환 실행 : 내 쿼리는 다음과 같다. 이것은 좋지 않다. 나는 직업 당 오직 한 가지 결과 만 원한다. 나는 문자열을 추가하는 경우
: WHERE b.session_id = 그것은 잘 작동,하지만 그것은 단지 SESSION_ID 매개 변수에 따라 최신 작업을 나열 (MAX msdb.dbo.sysjobactivity에서 (SESSION_ID를) 선택). 이 작업은 잠시 동안 실행되지 않은 작업과 제외 된 작업을 제외시킵니다.
누군가가 도와 줄 수 있습니까? DISTINCT 및/또는 GROUP BY로 시도했지만 작동시키지 못했습니다.
어떤 SQL Server 버전입니까? (이것은'ROW_NUMBER()'가 사용 가능한지를 결정합니다.) – AakashM