I recently had the need to create an SSRS report showing the status of some jobs from the 10 last days, so I wrote this script that I thought could come in handy to others as well. The contents should be pretty self explanatory except maybe for the RowNum column which is there to separate each iteration of the job:WITH cte_jobhistory AS ( --> Creating a cte only to make the columns run_date and run_time into a "datetime-friendly" format -- so it can be used for filtering SELECT RunDateString = SUBSTRING(CAST(run_date as VARCHAR(20)), 1, 4) + '-' + SUBSTRING(CAST(run_date as VARCHAR(20)), 5, 2) + '-' + SUBSTRING(CAST(run_date as VARCHAR(20)), 7, 2), RunTimeString = SUBSTRING(RIGHT('000000' + CAST(run_time as VARCHAR(20)), 6), 1, 2) + ':' + SUBSTRING(RIGHT('000000' + CAST(run_time as VARCHAR(20)), 6), 3, 2) + ':' + SUBSTRING(RIGHT('000000' + CAST(run_time as VARCHAR(20)), 6), 5, 2), * FROM msdb.dbo.sysjobhistory )SELECT a.name, RowNum = ROW_NUMBER() OVER (PARTITION BY a.name, b.step_id ORDER BY instance_id DESC), b.step_id, b.step_name, b.message, RunStatus = CASE b.run_status WHEN 0 THEN 'Failed' WHEN 1 THEN 'Succeded' WHEN 2 THEN 'Retry' WHEN 3 THEN 'Cancelled' WHEN 4 THEN 'In Progress' END, b.run_duration, b.RunDateString, b.RunTimeStringFROM msdb.dbo.sysjobs a INNER JOIN cte_jobhistory b ON a.job_id = b.job_idWHERE CONVERT(datetime, b.RunDateString) > GETDATE()-10ORDER BY a.name ASC, b.instance_id DESC
- LumbagoMy blog-> http://thefirstsql.com