DBATool-Get SQL Server Job Details

Use the below code to get SQL Server Job Properties.

	select	t1.name as jobName, 
			case t1.enabled 
				when 1 then 'Enabled'
				else 'Disabled'
			end as jobStatus,
			t3.name as scheduleName,
			case t3.enabled 
				when 1 then 'Enabled'
				else 'Disabled'
			end as scheduleStatus,
			case freq_type
				when 1 then 'Once Only'
				when 4 then 'Daily'
				when 8 then 'Weekly'
				when 16 then 'Monthly'
				when 32 then 'Monthly'
			end	as frequency,
			case 
				when freq_type = 4 then 'SuMoTuWeThFrSa'
				when freq_type = 8 then
					case
						when t3.freq_interval & 1 = 1 then 'Su'
						else ''
					end +
					case
						when t3.freq_interval & 2 = 2 then 'Mo'
						else ''
					end +
					case
						when t3.freq_interval & 4 = 4 then 'Tu'
						else ''
					end +
					case
						when t3.freq_interval & 8 = 8 then 'We'
						else ''
					end +
					case
						when t3.freq_interval & 16 = 16 then 'Th'
						else ''
					end +
					case
						when t3.freq_interval & 32 = 32 then 'Fr'
						else ''
					end +
					case
						when t3.freq_interval & 64 = 64 then 'Sa'
						else ''
					end 
				when freq_type = 16 then 'Day ' + convert(varchar(2), freq_interval)
				when freq_type = 32 then
					case
						when t3.freq_interval = 1 then 'Su'
						when t3.freq_interval = 2 then 'Mo'
						when t3.freq_interval = 3 then 'Tu'
						when t3.freq_interval = 4 then 'We'
						when t3.freq_interval = 5 then 'Th'
						when t3.freq_interval = 6 then 'Fr'
						when t3.freq_interval = 7 then 'Sa'
						when t3.freq_interval = 8 then 'SuMoTuWeThFrSa'
						when t3.freq_interval = 9 then 'MoTuWeThFr'
						when t3.freq_interval = 10 then 'SuSa'
					end
			end as daysRunning,
			right('000000' + convert(varchar(6), active_start_time), 6) as startTime,
			right('000000' + convert(varchar(6), active_end_time), 6) as endTime,
			case
				when freq_type = 32 and freq_relative_interval > 0 then 'Every ' +
					case t3.freq_relative_interval		
						when 1 then '1st '
						when 2 then '2nd '
						when 4 then '3rd '
						when 8 then '4th '
						when 16 then 'last '
					end +
					case t3.freq_interval
						when 1 then 'Su'
						when 2 then 'Mo'
						when 3 then 'Tu'
						when 4 then 'We'
						when 5 then 'Th'
						when 6 then 'Fr'
						when 7 then 'Sa'
						when 9 then 'MoTuWeThFr'
						when 10 then 'SuSa'
					end
				when t3.freq_subday_type = 1 then 'Once'
				when t3.freq_subday_type = 2 then 'Every ' + convert(varchar(25), t3.freq_subday_interval) + ' seconds'
				when t3.freq_subday_type = 4 then 'Every ' + convert(varchar(25), t3.freq_subday_interval) + ' minutes'
				when t3.freq_subday_type = 8 then 'Every ' + convert(varchar(25), t3.freq_subday_interval) + ' hours'
			end as occurence,
			case 
				when freq_type = 32 and freq_recurrence_factor >= 1 then 'Every ' + convert(varchar(5), freq_recurrence_factor) + ' month(s)'
				when freq_type = 16 and freq_recurrence_factor >= 1 then 'Every ' + convert(varchar(5), freq_recurrence_factor) + ' month(s)'
				when freq_type = 8 and freq_recurrence_factor >= 1 then 'Every ' + convert(varchar(5), freq_recurrence_factor) + ' week(s)'
				when freq_type = 4 then 'Daily'
				when freq_type = 1 then 'Once Only'
			end as cycle,
			t3.active_start_date as startDate,
			t3.active_end_date as endDate
		from msdb.dbo.sysjobs t1
		inner join msdb.dbo.sysjobschedules t2
			on t1.job_id = t2.job_id
		inner join msdb.dbo.sysschedules t3
			on t2.schedule_id = t3.schedule_id;

Output:

Output

Leave a comment