dbo.sysjobhistory (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Contiene informazioni sull'esecuzione di processi pianificati da SQL Server Agent.
Nota
Nella maggior parte dei casi, i dati vengono aggiornati solo dopo il completamento del passaggio del processo e la tabella in genere non contiene record per i passaggi di processo attualmente in corso. In alcuni casi, i processi sottostanti forniscono informazioni sui passaggi del processo in corso.
Questa tabella viene archiviata nel msdb
database.
Esempi
La query Transact-SQL seguente converte le run_date
colonne e run_time
in una colonna datetime denominata LastRunStartDateTime
. La run_duration
colonna viene convertita in una colonna int denominata LastRunDurationSeconds
. Queste due colonne vengono quindi usate per calcolare .LastRunFinishDateTime
La run_duration
colonna viene anche convertita in un formato più semplice da usare. È possibile eseguire lo script in SQL Server Management Studio o In Azure Data Studio.
SET NOCOUNT ON;
SELECT sj.name AS Name,
sh.step_name AS StepName,
shp.LastRunStartDateTime,
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime,
shp.LastRunDurationSeconds,
CASE
WHEN sh.run_duration > 235959
THEN CAST((CAST(LEFT(CAST(sh.run_duration AS VARCHAR),
LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) / 24) AS VARCHAR)
+ '.' + RIGHT('00' + CAST(CAST(LEFT(CAST(sh.run_duration AS VARCHAR),
LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) % 24 AS VARCHAR), 2)
+ ':' + STUFF(CAST(RIGHT(CAST(sh.run_duration AS VARCHAR), 4) AS VARCHAR(6)), 3, 0, ':')
ELSE STUFF(STUFF(RIGHT(REPLICATE('0', 6) + CAST(sh.run_duration AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')
END AS [LastRunDuration (d.HH:MM:SS)],
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory sh ON sj.job_id = sh.job_id
CROSS APPLY (SELECT DATETIMEFROMPARTS(sh.run_date / 10000, -- years
sh.run_date % 10000 / 100, -- months
sh.run_date % 100, -- days
sh.run_time / 10000, -- hours
sh.run_time % 10000 / 100, -- minutes
sh.run_time % 100, -- seconds
0 -- milliseconds
) AS LastRunStartDateTime,
(sh.run_duration / 10000) * 3600 -- convert hours to seconds, can be greater than 24
+ ((sh.run_duration % 10000) / 100) * 60 -- convert minutes to seconds
+ (sh.run_duration % 100) AS LastRunDurationSeconds
) AS shp;
GO