## Kedy použiť Ranná kontrola, po maintenance okne alebo po hlásení o neúspešnom jobe. ## Ako čítať výsledok Berie sa len súhrnný riadok behu (`step_id = 0`). `run_status`: 0 = failed, 3 = canceled. Detail chyby konkrétneho kroku nájdeš v histórii jobu v SSMS. > [!WARNING] > Práve bežiaci job ešte nemá súhrnný riadok – na to je recept o bežiacich joboch. História jobov sa pravidelne čistí (predvolene 1000 riadkov celkovo, 100 na job). **Oprávnenia:** Čítanie agent tabuliek v msdb, napr. rola `SQLAgentReaderRole`. **Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022 ## Súvisiace recepty - [SQL Agent – práve bežiace joby](script.php?id=41&s=sql-agent-prave-beziace-joby)
Skript
SQL Agent – joby, ktoré naposledy zlyhali
Posledný dokončený beh každého jobu, ktorý skončil chybou alebo bol zrušený – s časom, trvaním a chybovou správou.
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | SQL Agent – joby, ktoré naposledy zlyhali
Účel: Posledný dokončený beh každého jobu, ktorý skončil chybou alebo bol zrušený – s časom, trvaním a chybovou správou.
Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;
;WITH h AS
(
SELECT j.name AS job_name, j.enabled,
hist.instance_id, hist.run_status, hist.run_date, hist.run_time,
hist.run_duration, hist.message,
ROW_NUMBER() OVER (PARTITION BY j.job_id ORDER BY hist.instance_id DESC) AS rn
FROM msdb.dbo.sysjobs AS j
JOIN msdb.dbo.sysjobhistory AS hist ON hist.job_id = j.job_id AND hist.step_id = 0
)
SELECT job_name, enabled,
CASE run_status WHEN 0 THEN 'FAILED' WHEN 3 THEN 'CANCELED' END AS run_status,
-- run_date = yyyymmdd, run_time a run_duration = hhmmss ako int
DATEADD(SECOND, run_time / 10000 * 3600 + run_time / 100 % 100 * 60 + run_time % 100,
CONVERT(datetime, CONVERT(char(8), run_date), 112)) AS run_started_at,
run_duration / 10000 * 3600 + run_duration / 100 % 100 * 60 + run_duration % 100 AS duration_seconds,
message
FROM h
WHERE rn = 1 AND run_status IN (0, 3)
ORDER BY run_started_at DESC;