dbo.sysjobhistory (Transact-SQL)

Applies to: yesSQL Server (all supported versions)

Contains information about the execution of scheduled jobs by SQL Server Agent.


In most cases the data is updated only after the job step completes and the table typically contains no records for job steps that are currently in progress, but in some cases underlying processes do provide information about in progress job steps.

This table is stored in the msdb database.

Column name Data type Description
instance_id int Unique identifier for the row.
job_id uniqueidentifier Job ID.
step_id int ID of the step in the job.
step_name sysname Name of the step.
sql_message_id int ID of any SQL Server error message returned if the job failed.
sql_severity int Severity of any SQL Server error.
message nvarchar(4000) Text, if any, of a SQL Server error.
run_status int Status of the job execution:

0 = Failed

1 = Succeeded

2 = Retry

3 = Canceled

4 = In Progress
run_date int Date the job or step started execution. For an In Progress history, this is the date/time the history was written.
run_time int Time the job or step started in HHMMSS format.
run_duration int Elapsed time in the execution of the job or step in HHMMSS format.
operator_id_emailed int ID of the operator notified when the job completed.
operator_id_netsent int ID of the operator notified by a message when the job completed.
operator_id_paged int ID of the operator notified by pager when the job completed.
retries_attempted int Number of retry attempts for the job or step.
server sysname Name of the server where the job was executed.


The following Transact-SQL query will convert the run_time and run_duration columns into a more user friendly format. Execute the script in SQL Server Management Studio.


SELECT sj.name,
		STUFF(STUFF(RIGHT(REPLICATE('0', 6) +  CAST(sh.run_time as varchar(6)), 6), 3, 0, ':'), 6, 0, ':') 'run_time',
		STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(sh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') 'run_duration (DD:HH:MM:SS)  '
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobhistory sh
ON sj.job_id = sh.job_id