SQL Server Jobs Monitoring: Letzte Ausführungszeit und Dauer prüfen

SQL Server Agent Jobs sind das Rückgrat automatisierter Datenbankoperationen – Backups, Wartungsaufgaben, ETL-Prozesse. Dieses Monitoring-Script gibt sofort Überblick über alle Jobs, ihre letzte Ausführung und eventuelle Fehler.

Alle Jobs mit letzter Ausführung

SELECT
    j.name AS job_name,
    j.enabled,
    CASE jh.run_status
        WHEN 0 THEN 'Failed'
        WHEN 1 THEN 'Succeeded'
        WHEN 2 THEN 'Retry'
        WHEN 3 THEN 'Cancelled'
    END AS last_run_status,
    msdb.dbo.agent_datetime(jh.run_date, jh.run_time) AS last_run_datetime,
    STUFF(STUFF(RIGHT('000000' + CAST(jh.run_duration AS VARCHAR), 6), 3, 0, ':'), 6, 0, ':')
        AS duration_hhmmss,
    jh.message AS last_message
FROM msdb.dbo.sysjobs j
LEFT JOIN msdb.dbo.sysjobhistory jh
    ON j.job_id = jh.job_id
    AND jh.instance_id = (
        SELECT MAX(instance_id)
        FROM msdb.dbo.sysjobhistory
        WHERE job_id = j.job_id
          AND step_id = 0
    )
ORDER BY j.name;

Nur fehlgeschlagene Jobs der letzten 24 Stunden

SELECT
    j.name AS job_name,
    msdb.dbo.agent_datetime(jh.run_date, jh.run_time) AS failed_at,
    jh.message
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id
WHERE jh.run_status = 0  -- Failed
  AND jh.step_id = 0  -- Job-Level, nicht Step-Level
  AND msdb.dbo.agent_datetime(jh.run_date, jh.run_time) > GETDATE() - 1
ORDER BY failed_at DESC;

Dieses Script eignet sich hervorragend für tägliche Health-Check-Reports oder als Grundlage für Alert-Systeme. Kombiniert mit SQL Server Database Mail kann man bei Job-Fehler automatisch E-Mail-Benachrichtigungen senden.