很早之前保存的,出处没记录~
SELECT /*S.job_id,*/ S.job_name, S.is_job_enabled, S.is_schedule_enabled, S.schedule_name, S.Description ,avg_duration_in_seconds = avg(datediff(s, '1/1/2000', ('1/1/2000 ' + cast(stuff(stuff(right('000000' + cast(h.run_duration as varchar(6)), 6),5,0,':'),3,0,':') as datetime)))) ,number_of_runs = count(1) FROM (SELECT SJ.job_id , SJ.name as job_name , SJ.enabled as is_job_enabled , SS.enabled as is_schedule_enabled , SS.name as schedule_name , CASE freq_type WHEN 1 THEN 'Occurs on ' + STUFF(RIGHT(active_start_date, 4), 3,0, '/') + '/' + LEFT(active_start_date, 4) + ' at ' + REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime) /* hh:mm:ss 24H */, 9), 14), ':000', ' ') WHEN 4 THEN 'Occurs every ' + CAST(freq_interval as varchar(10)) + ' day(s) ' + CASE freq_subday_type WHEN 1 THEN 'at '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) WHEN 2 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' second(s)' WHEN 4 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' minute(s)' WHEN 8 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' hour(s)' ELSE '' END + CASE WHEN freq_subday_type in (2,4,8) /* repeat seconds/mins/hours */ THEN ' between '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) + ' and ' + LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_end_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) ELSE '' END WHEN 8 THEN 'Occurs every ' + CAST(freq_recurrence_factor as varchar(10)) + ' week(s) on ' + REPLACE( CASE WHEN freq_interval&1 = 1 THEN 'Sunday, ' ELSE '' END + CASE WHEN freq_interval&2 = 2 THEN 'Monday, ' ELSE '' END + CASE WHEN freq_interval&4 = 4 THEN 'Tuesday, ' ELSE '' END + CASE WHEN freq_interval&8 = 8 THEN 'Wednesday, ' ELSE '' END + CASE WHEN freq_interval&16 = 16 THEN 'Thursday, ' ELSE '' END + CASE WHEN freq_interval&32 = 32 THEN 'Friday, ' ELSE '' END + CASE WHEN freq_interval&64 = 64 THEN 'Saturday, ' ELSE '' END + '|', ', |', ' ') /* get rid of trailing comma */ + CASE freq_subday_type WHEN 1 THEN 'at '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) WHEN 2 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' second(s)' WHEN 4 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' minute(s)' WHEN 8 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' hour(s)' ELSE '' END + CASE WHEN freq_subday_type in (2,4,8) /* repeat seconds/mins/hours */ THEN ' between '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) + ' and ' + LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_end_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) ELSE '' END WHEN 16 THEN 'Occurs every ' + CAST(freq_recurrence_factor as varchar(10)) + ' month(s) on ' + 'day ' + CAST(freq_interval as varchar(10)) + ' of that month ' + CASE freq_subday_type WHEN 1 THEN 'at '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) WHEN 2 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' second(s)' WHEN 4 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' minute(s)' WHEN 8 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' hour(s)' ELSE '' END + CASE WHEN freq_subday_type in (2,4,8) /* repeat seconds/mins/hours */ THEN ' between '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) + ' and ' + LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_end_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) ELSE '' END WHEN 32 THEN 'Occurs ' + CASE freq_relative_interval WHEN 1 THEN 'every first ' WHEN 2 THEN 'every second ' WHEN 4 THEN 'every third ' WHEN 8 THEN 'every fourth ' WHEN 16 THEN 'on the last ' END + CASE freq_interval WHEN 1 THEN 'Sunday' WHEN 2 THEN 'Monday' WHEN 3 THEN 'Tuesday' WHEN 4 THEN 'Wednesday' WHEN 5 THEN 'Thursday' WHEN 6 THEN 'Friday' WHEN 7 THEN 'Saturday' WHEN 8 THEN 'day' WHEN 9 THEN 'weekday' WHEN 10 THEN 'weekend' END + ' of every ' + CAST(freq_recurrence_factor as varchar(10)) + ' month(s) ' + CASE freq_subday_type WHEN 1 THEN 'at '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) WHEN 2 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' second(s)' WHEN 4 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' minute(s)' WHEN 8 THEN 'every ' + CAST(freq_subday_interval as varchar(10)) + ' hour(s)' ELSE '' END + CASE WHEN freq_subday_type in (2,4,8) /* repeat seconds/mins/hours */ THEN ' between '+ LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_start_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) + ' and ' + LTRIM(REPLACE( RIGHT(CONVERT(varchar(30), CAST(convert(varchar(8), STUFF(STUFF(RIGHT('000000' + CAST(active_end_time as varchar(10)), 6), 3, 0, ':' ), 6, 0, ':' ), 8) as datetime), 9), 14), ':000', ' ')) ELSE '' END WHEN 64 THEN 'Runs when the SQL Server Agent service starts' WHEN 128 THEN 'Runs when the computer is idle' END AS [Description] FROM msdb.dbo.sysjobs SJ INNER JOIN msdb.dbo.sysjobschedules SJS ON SJ.job_id = SJS.job_id INNER JOIN msdb.dbo.sysschedules SS ON SJS.schedule_id = SS.schedule_id INNER JOIN msdb.dbo.syscategories SC ON SJ.category_id = SC.category_id --WHERE SC.name = 'Name from query below' ) S INNER JOIN msdb.dbo.sysjobhistory H ON s.job_id = H.job_id AND H.step_id = 0 WHERE H.run_date >= /* 7 days ago */cast(datepart(yyyy, dateadd(d, -7, getDate())) as VarChar(10)) + cast(datepart(mm, dateadd(d, -7, getDate())) as VarChar(10)) + cast(datepart(dd, dateadd(d, -7, getDate())) as VarChar(10)) GROUP BY /*S.job_id,*/ S.job_name, S.is_job_enabled, S.is_schedule_enabled, S.schedule_name, S.Description ORDER BY S.job_name