1 DECLARE @WeekDays TABLE 2 ( 3 freq_interval INT, 4 weekdays NVARCHAR(120) 5 6 ) 7 8 INSERT INTO @WeekDays 9 SELECT 1 ,N'星期日 ' UNION ALL 10 SELECT 2 ,N'星期一 ' UNION ALL 11 SELECT 4 ,N'星期二 ' UNION ALL 12 SELECT 8 ,N'星期三 ' UNION ALL 13 SELECT 16 ,N'星期四 ' UNION ALL 14 SELECT 32 ,N'星期五 ' UNION ALL 15 SELECT 64 ,N'星期六 ' UNION ALL 16 SELECT 3 ,N'星期日,一 ' UNION ALL 17 SELECT 5 ,N'星期日,二 ' UNION ALL 18 SELECT 9 ,N'星期日,三 ' UNION ALL 19 SELECT 17 ,N'星期日,四 ' UNION ALL 20 SELECT 33 ,N'星期日,五 ' UNION ALL 21 SELECT 65 ,N'星期日,六 ' UNION ALL 22 SELECT 6 ,N'星期一,二 ' UNION ALL 23 SELECT 10 ,N'星期一,三 ' UNION ALL 24 SELECT 18 ,N'星期一,四 ' UNION ALL 25 SELECT 34 ,N'星期一,五 ' UNION ALL 26 SELECT 66 ,N'星期一,六 ' UNION ALL 27 SELECT 12 ,N'星期二,三 ' UNION ALL 28 SELECT 20 ,N'星期二,四 ' UNION ALL 29 SELECT 36 ,N'星期二,五 ' UNION ALL 30 SELECT 68 ,N'星期二,六 ' UNION ALL 31 SELECT 24 ,N'星期三,四 ' UNION ALL 32 SELECT 40 ,N'星期三,五 ' UNION ALL 33 SELECT 72 ,N'星期三,六 ' UNION ALL 34 SELECT 48 ,N'星期四,五 ' UNION ALL 35 SELECT 80 ,N'星期四,六 ' UNION ALL 36 SELECT 96 ,N'星期五,六 ' UNION ALL 37 SELECT 7 ,N'星期日,一,二 ' UNION ALL 38 SELECT 11 ,N'星期日,一,三 ' UNION ALL 39 SELECT 19 ,N'星期日,一,四 ' UNION ALL 40 SELECT 35 ,N'星期日,一,五 ' UNION ALL 41 SELECT 67 ,N'星期日,一,六 ' UNION ALL 42 SELECT 13 ,N'星期日,二,三 ' UNION ALL 43 SELECT 21 ,N'星期日,二,四 ' UNION ALL 44 SELECT 37 ,N'星期日,二,五 ' UNION ALL 45 SELECT 69 ,N'星期日,二,六 ' UNION ALL 46 SELECT 25 ,N'星期日,三,四 ' UNION ALL 47 SELECT 41 ,N'星期日,三,五 ' UNION ALL 48 SELECT 73 ,N'星期日,三,六 ' UNION ALL 49 SELECT 49 ,N'星期日,四,五 ' UNION ALL 50 SELECT 81 ,N'星期日,四,六 ' UNION ALL 51 SELECT 97 ,N'星期日,五,六 ' UNION ALL 52 SELECT 14 ,N'星期一,二,三 ' UNION ALL 53 SELECT 22 ,N'星期一,二,四 ' UNION ALL 54 SELECT 38 ,N'星期一,二,五 ' UNION ALL 55 SELECT 70 ,N'星期一,二,六 ' UNION ALL 56 SELECT 26 ,N'星期一,三,四 ' UNION ALL 57 SELECT 42 ,N'星期一,三,五 ' UNION ALL 58 SELECT 74 ,N'星期一,三,六 ' UNION ALL 59 SELECT 50 ,N'星期一,四,五 ' UNION ALL 60 SELECT 82 ,N'星期一,四,六 ' UNION ALL 61 SELECT 98 ,N'星期一,五,六 ' UNION ALL 62 SELECT 28 ,N'星期二,三,四 ' UNION ALL 63 SELECT 44 ,N'星期二,三,五 ' UNION ALL 64 SELECT 76 ,N'星期二,三,六 ' UNION ALL 65 SELECT 52 ,N'星期二,四,五 ' UNION ALL 66 SELECT 84 ,N'星期二,四,六 ' UNION ALL 67 SELECT 100 ,N'星期二,五,六 ' UNION ALL 68 SELECT 56 ,N'星期三,四,五 ' UNION ALL 69 SELECT 88 ,N'星期三,四,六 ' UNION ALL 70 SELECT 104 ,N'星期三,五,六 ' UNION ALL 71 SELECT 112 ,N'星期四,五,六 ' UNION ALL 72 SELECT 15 ,N'星期日,一,二,三 ' UNION ALL 73 SELECT 23 ,N'星期日,一,二,四 ' UNION ALL 74 SELECT 39 ,N'星期日,一,二,五 ' UNION ALL 75 SELECT 71 ,N'星期日,一,二,六 ' UNION ALL 76 SELECT 27 ,N'星期日,一,三,四 ' UNION ALL 77 SELECT 43 ,N'星期日,一,三,五 ' UNION ALL 78 SELECT 75 ,N'星期日,一,三,六 ' UNION ALL 79 SELECT 51 ,N'星期日,一,四,五 ' UNION ALL 80 SELECT 83 ,N'星期日,一,四,六 ' UNION ALL 81 SELECT 99 ,N'星期日,一,五,六 ' UNION ALL 82 SELECT 29 ,N'星期日,二,三,四 ' UNION ALL 83 SELECT 45 ,N'星期日,二,三,五 ' UNION ALL 84 SELECT 77 ,N'星期日,二,三,六 ' UNION ALL 85 SELECT 53 ,N'星期日,二,四,五 ' UNION ALL 86 SELECT 85 ,N'星期日,二,四,六 ' UNION ALL 87 SELECT 101 ,N'星期日,二,五,六 ' UNION ALL 88 SELECT 57 ,N'星期日,三,四,五 ' UNION ALL 89 SELECT 89 ,N'星期日,三,四,六 ' UNION ALL 90 SELECT 105 ,N'星期日,三,五,六 ' UNION ALL 91 SELECT 113 ,N'星期日,四,五,六 ' UNION ALL 92 SELECT 30 ,N'星期一,二,三,四 ' UNION ALL 93 SELECT 46 ,N'星期一,二,三,五 ' UNION ALL 94 SELECT 78 ,N'星期一,二,三,六 ' UNION ALL 95 SELECT 54 ,N'星期一,二,四,五 ' UNION ALL 96 SELECT 86 ,N'星期一,二,四,六 ' UNION ALL 97 SELECT 102 ,N'星期一,二,五,六 ' UNION ALL 98 SELECT 58 ,N'星期一,三,四,五 ' UNION ALL 99 SELECT 90 ,N'星期一,三,四,六 ' UNION ALL 100 SELECT 106 ,N'星期一,三,五,六 ' UNION ALL 101 SELECT 114 ,N'星期一,四,五,六 ' UNION ALL 102 SELECT 60 ,N'星期二,三,四,五 ' UNION ALL 103 SELECT 92 ,N'星期二,三,四,六 ' UNION ALL 104 SELECT 108 ,N'星期二,三,五,六 ' UNION ALL 105 SELECT 116 ,N'星期二,四,五,六 ' UNION ALL 106 SELECT 120 ,N'星期三,四,五,六 ' UNION ALL 107 SELECT 31 ,N'星期日,一,二,三,四 ' UNION ALL 108 SELECT 47 ,N'星期日,一,二,三,五 ' UNION ALL 109 SELECT 79 ,N'星期日,一,二,三,六 ' UNION ALL 110 SELECT 55 ,N'星期日,一,二,四,五 ' UNION ALL 111 SELECT 87 ,N'星期日,一,二,四,六 ' UNION ALL 112 SELECT 103 ,N'星期日,一,二,五,六 ' UNION ALL 113 SELECT 59 ,N'星期日,一,三,四,五 ' UNION ALL 114 SELECT 91 ,N'星期日,一,三,四,六 ' UNION ALL 115 SELECT 107 ,N'星期日,一,三,五,六 ' UNION ALL 116 SELECT 115 ,N'星期日,一,四,五,六 ' UNION ALL 117 SELECT 61 ,N'星期日,二,三,四,五 ' UNION ALL 118 SELECT 93 ,N'星期日,二,三,四,六 ' UNION ALL 119 SELECT 109 ,N'星期日,二,三,五,六 ' UNION ALL 120 SELECT 117 ,N'星期日,二,四,五,六 ' UNION ALL 121 SELECT 121 ,N'星期日,三,四,五,六 ' UNION ALL 122 SELECT 62 ,N'星期一,二,三,四,五 ' UNION ALL 123 SELECT 94 ,N'星期一,二,三,四,六 ' UNION ALL 124 SELECT 110 ,N'星期一,二,三,五,六 ' UNION ALL 125 SELECT 118 ,N'星期一,二,四,五,六 ' UNION ALL 126 SELECT 122 ,N'星期一,三,四,五,六 ' UNION ALL 127 SELECT 124 ,N'星期二,三,四,五,六 ' UNION ALL 128 SELECT 63 ,N'星期日,一,二,三,四,五' UNION ALL 129 SELECT 95 ,N'星期日,一,二,三,四,六' UNION ALL 130 SELECT 111 ,N'星期日,一,二,三,五,六' UNION ALL 131 SELECT 119 ,N'星期日,一,二,四,五,六' UNION ALL 132 SELECT 123 ,N'星期日,一,三,四,五,六' UNION ALL 133 SELECT 125 ,N'星期日,二,三,四,五,六' UNION ALL 134 SELECT 126 ,N'星期一,二,三,四,五,六' UNION ALL 135 SELECT 127 ,N'星期日,一,二,三,四,五,六'; 136 137 --SELECT * FROM msdb.dbo.sysjobsteps --作业对应步骤明细 138 139 --select * from @WeekDays 140 141 SELECT d.job_id AS job_id , 142 j.name AS job_name , 143 j.[description] AS '作业描述', 144 [jstep].[database_name] AS '执行数据库名' 145 ,[jstep].[command] AS '执行命令', 146 CASE WHEN j.enabled =1 THEN N'启用' 147 ELSE N'禁用' END AS job_staus, 148 CASE WHEN freq_type=1 THEN N'运行一次' 149 WHEN freq_type=4 THEN N'每天执行' 150 WHEN freq_type=8 THEN N'每周执行' 151 WHEN freq_type=16 THEN N'每月执行' 152 WHEN freq_type=32 THEN N'每月执行' 153 WHEN freq_type=64 THEN N'代理服务启动时运行' 154 WHEN freq_type=128 THEN N'在计算机空闲时运行' 155 END AS freq_type, 156 CASE WHEN freq_type=1 THEN N'选项无意义' 157 WHEN freq_type=4 THEN 158 ( 159 CASE WHEN freq_subday_type=4 160 THEN N'每隔' + CONVERT(NVARCHAR(4),freq_subday_interval) +N'分钟执行一次' 161 WHEN freq_subday_type=8 162 THEN N'每隔' + CONVERT(NVARCHAR(4),freq_subday_interval) +N'小时执行一次' 163 ELSE N'每天执行'+ CONVERT(NVARCHAR(4),freq_interval) + N'次' 164 END 165 ) 166 WHEN freq_type=8 THEN 167 ( SELECT w.weekdays FROM @WeekDays w WHERE w.freq_interval= s.freq_interval 168 ) 169 170 WHEN freq_type=16 THEN N'每月' + CONVERT(NVARCHAR(4),freq_interval) + N'号执行' 171 WHEN freq_type=32 THEN N'每月星期' + CONVERT(NVARCHAR(4),freq_interval) + N'执行' 172 END AS freq_relative_interval, 173 CASE WHEN freq_subday_type =1 THEN N'指定时间点执行一次' 174 WHEN freq_subday_type =2 THEN N'每隔:' + CAST(freq_subday_interval AS VARCHAR(2)) + N'秒执行一次' 175 WHEN freq_subday_type =4 THEN N'每隔:' + CAST(freq_subday_interval AS VARCHAR(2)) + N'分执行一次' 176 WHEN freq_subday_type =8 THEN N'每隔:' + CAST(freq_subday_interval AS VARCHAR(2)) + N'小时执行一次' 177 END AS freq_subday_type, 178 CASE WHEN freq_subday_type =1 THEN N'开始时间点:' 179 + CAST(active_start_time / 10000 AS VARCHAR(2)) + N'点' 180 + CAST(active_start_time%10000/100 AS VARCHAR(2)) + N'分' 181 WHEN freq_subday_type =2 THEN N'开始时间点:' 182 + CAST(active_start_time / 10000 AS VARCHAR(2)) + N'点' 183 + CAST(active_start_time%10000/100 AS VARCHAR(2)) + N'分' 184 WHEN freq_subday_type =4 THEN N'开始时间点:' 185 + CAST(active_start_time / 10000 AS VARCHAR(2)) + N'点' 186 + CAST(active_start_time%10000/100 AS VARCHAR(2)) + N'分' 187 WHEN freq_subday_type =8 THEN N'开始时间点:' 188 + CAST(active_start_time / 10000 AS VARCHAR(2)) + N'点' 189 + CAST(active_start_time%10000/100 AS VARCHAR(2)) + N'分' 190 END AS job_start_time, 191 CASE WHEN freq_subday_type =1 THEN N'结束时间点:' 192 + CAST(active_end_time / 10000 AS VARCHAR(2)) + N'点' 193 + CAST(active_end_time%10000/100 AS VARCHAR(2)) + N'分' 194 WHEN freq_subday_type =2 THEN N'结束时间点:' 195 + CAST(active_end_time / 10000 AS VARCHAR(2)) + N'点' 196 + CAST(active_end_time%10000/100 AS VARCHAR(2)) + N'分' 197 WHEN freq_subday_type =4 THEN N'结束时间点:' 198 + CAST(active_end_time / 10000 AS VARCHAR(2)) + N'点' 199 + CAST(active_end_time%10000/100 AS VARCHAR(2)) + N'分' 200 WHEN freq_subday_type =8 THEN N'结束时间点:' 201 + CAST(active_end_time / 10000 AS VARCHAR(2)) + N'点' 202 + CAST(active_end_time%10000/100 AS VARCHAR(2)) + N'分' 203 END AS job_end_time, 204 freq_type, 205 freq_interval, 206 freq_subday_type, 207 freq_subday_interval, 208 active_start_date, 209 active_start_time 210 , 211 j.[date_created] AS '作业创建日期' 212 ,j.[date_modified] AS '作业最后修改日期' 213 ,[jstep].[step_id] AS '作业起始步骤' 214 ,[jstep].[step_name] AS '步骤名称' 215 FROM msdb.dbo.sysschedules s 216 INNER JOIN msdb.dbo.sysjobschedules d ON s.schedule_id=d.schedule_id 217 INNER JOIN msdb.dbo.sysjobs j ON d.job_id = j.job_id 218 inner join [msdb].[dbo].[sysjobsteps] AS [jstep] on d.job_id=jstep.job_id 219 ORDER BY j.name