dbo.sysjobhistory (Transact-SQL)
S’applique à : SQL Server Azure SQL Managed Instance
Contient des informations sur l’exécution des travaux planifiés par l’Agent SQL Server.
Remarque
Dans la plupart des cas, les données sont mises à jour uniquement une fois l’étape de travail terminée, et la table ne contient généralement aucun enregistrement pour les étapes de travail en cours. Dans certains cas, les processus sous-jacents fournissent des informations sur les étapes de travail en cours.
Cette table est stockée dans la msdb
base de données.
Exemples
La requête Transact-SQL suivante convertit les colonnes et run_time
les run_date
colonnes en colonne datetime nommée LastRunStartDateTime
. La run_duration
colonne est convertie en colonne int nommée LastRunDurationSeconds
. Ces deux colonnes sont ensuite utilisées pour calculer le LastRunFinishDateTime
. La run_duration
colonne est également convertie en format plus convivial. Vous pouvez exécuter le script dans SQL Server Management Studio ou 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