SQL SERVER 查詢Job作業基本信息及執行情況


1.查詢作業基本信息和作業執行情況

 1 SELECT
 2     [jop].[job_id] AS '作業唯一標識符'
 3    ,[jop].[name] AS '作業名稱'
 4    ,[dp].[name] AS '作業創建者'
 5    ,[cat].[name] AS '作業類別'
 6    ,[jop].[description] AS '作業描述'
 7    , CASE [jop].[enabled]
 8         WHEN 1 THEN ''
 9         WHEN 0 THEN ''
10       END AS '是否啟用'
11    ,[jop].[date_created] AS '作業創建日期'
12    ,[jop].[date_modified] AS '作業最后修改日期'
13    ,[sv].[name] AS '作業運行服務器名稱'
14    ,[step].[step_id] AS '作業起始步驟'
15    ,[step].[step_name] AS '步驟名稱'
16    , CASE
17         WHEN [sch].[schedule_uid] IS NULL THEN ''
18           ELSE ''
19       END AS '是否分布式作業'
20    ,[sch].[schedule_uid] AS '作業計划的唯一標識符'
21    ,[sch].[name] AS '作業計划的用戶定義名稱'
22    , CASE [jop].[delete_level]
23         WHEN 0 THEN '不刪除'
24         WHEN 1 THEN '成功后刪除'
25         WHEN 2 THEN '失敗后刪除'
26         WHEN 3 THEN '完成后刪除'
27       END AS '作業完成刪除選項'
28 FROM [msdb].[dbo].[sysjobs] AS [jop]
29 LEFT JOIN [msdb].[sys].[servers] AS [sv]
30          ON [jop].[originating_server_id] = [sv].[server_id]
31 LEFT JOIN [msdb].[dbo].[syscategories] AS [cat]
32          ON [jop].[category_id] = [cat].[category_id]
33 LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [step]
34          ON [jop].[job_id] = [step].[job_id]
35             AND [jop].[start_step_id] = [step].[step_id]
36 LEFT JOIN [msdb].[sys].[database_principals] AS [dp]
37          ON [jop].[owner_sid] = [dp].[sid]
38 LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [jsch]
39          ON [jop].[job_id] = [jsch].[job_id]
40 LEFT JOIN [msdb].[dbo].[sysschedules] AS [sch]
41          ON [jsch].[schedule_id] = [sch].[schedule_id]
42 ORDER BY [jop].[name]

2.作業最后執行情況

 1 SELECT
 2     [job].[job_id] AS '作業唯一標示符'
 3    ,[job].[name] AS '作業名稱'
 4    , CASE WHEN [jobh].[run_date] IS NULL
 5                OR [jobh].[run_time] IS NULL THEN NULL
 6           ELSE CAST ( CAST ([jobh].[run_date] AS CHAR ( 8 )) + ' '
 7                + STUFF(STUFF( RIGHT ( '000000'
 8                                    + CAST ([jobh].[run_time] AS VARCHAR ( 6 )), 6 ),
 9                              3 , 0 , ':' ), 6 , 0 , ':' ) AS DATETIME)
10      END AS '最后執行時間'
11    , CASE [jobh].[run_status]
12       WHEN 0 THEN '失敗'
13       WHEN 1 THEN '成功'
14       WHEN 2 THEN '重試'
15       WHEN 3 THEN '取消'
16       WHEN 4 THEN '正在運行'
17      END AS '最后執行狀態'
18    ,STUFF(STUFF( RIGHT ( '000000' + CAST ([jobh].[run_duration] AS VARCHAR ( 6 )), 6 ),
19                  3 , 0 , ':' ), 6 , 0 , ':' ) AS '最后運行持續時間'
20    ,[jobh].[message] AS '最后運行狀態信息'
21    , CASE [jsch].[NextRunDate]
22       WHEN 0 THEN NULL
23        ELSE CAST ( CAST ([jsch].[NextRunDate] AS CHAR ( 8 )) + ' '
24             + STUFF(STUFF( RIGHT ( '000000'
25                                 + CAST ([jsch].[NextRunTime] AS VARCHAR ( 6 )),
26                                 6 ), 3 , 0 , ':' ), 6 , 0 , ':' ) AS DATETIME)
27      END AS '下次運行時間'
28 FROM [msdb].[dbo].[sysjobs] AS [job]
29 LEFT JOIN (
30              SELECT
31                 [job_id]
32                , MIN ([next_run_date]) AS [NextRunDate]
33                , MIN ([next_run_time]) AS [NextRunTime]
34              FROM [msdb].[dbo].[sysjobschedules]
35              GROUP BY [job_id]
36           ) AS [jsch]
37          ON [job].[job_id] = [jsch].[job_id]
38 LEFT JOIN (
39              SELECT
40                 [job_id]
41                ,[run_date]
42                ,[run_time]
43                ,[run_status]
44                ,[run_duration]
45                ,[message]
46                ,ROW_NUMBER() OVER ( PARTITION BY [job_id] ORDER BY [run_date] DESC , [run_time] DESC ) AS RowNumber
47              FROM [msdb].[dbo].[sysjobhistory]
48              WHERE [step_id] = 0
49           ) AS [jobh]
50      ON [job].[job_id] = [jobh].[job_id]
51         AND [jobh].[RowNumber] = 1
52 ORDER BY [job].[name]

3.查看每個作業步驟基本信息

 1 SELECT
 2     [job].[job_id] AS '作業唯一標識符'
 3    ,[job].[name] AS '作業名稱'
 4    ,[jstep].[step_uid] AS '步驟唯一標識符'
 5    ,[jstep].[step_id] AS '步驟編號'
 6    ,[jstep].[step_name] AS '步驟名稱'
 7    ,CASE [jstep].[subsystem]
 8       WHEN 'ActiveScripting' THEN 'ActiveX Script'
 9       WHEN 'CmdExec' THEN 'Operating system (CmdExec)'
10       WHEN 'PowerShell' THEN 'PowerShell'
11       WHEN 'Distribution' THEN 'Replication Distributor'
12       WHEN 'Merge' THEN 'Replication Merge'
13       WHEN 'QueueReader' THEN 'Replication Queue Reader'
14       WHEN 'Snapshot' THEN 'Replication Snapshot'
15       WHEN 'LogReader' THEN 'Replication Transaction-Log Reader'
16       WHEN 'ANALYSISCOMMAND' THEN 'SQL Server Analysis Services Command'
17       WHEN 'ANALYSISQUERY' THEN 'SQL Server Analysis Services Query'
18       WHEN 'SSIS' THEN 'SQL Server Integration Services Package'
19       WHEN 'TSQL' THEN 'Transact-SQL script (T-SQL)'
20       ELSE [jstep].[subsystem]
21     END AS '作業步驟類型'
22    ,CASE
23         WHEN [px].[name] IS NULL THEN 'SQL SERVER代理服務賬戶'
24         ELSE [px].[name]
25     END AS '步驟運行賬戶'
26    ,[jstep].[database_name] AS '執行數據庫名'
27    ,[jstep].[command] AS '執行命令'
28    ,CASE [jstep].[on_success_action]
29       WHEN 1 THEN '退出報表成功的作業'
30       WHEN 2 THEN '退出報告失敗的作業'
31       WHEN 3 THEN '轉到下一步'
32       WHEN 4
33       THEN '轉到步驟: '
34            + QUOTENAME(CAST([jstep].[on_success_step_id] AS VARCHAR(3))) + ' '
35            + [sOSSTP].[step_name]
36     END AS '執行成功后操作'
37    ,[jstep].[retry_attempts] AS '失敗時的重試次數'
38    ,[jstep].[retry_interval] AS '重試間的等待時間(分鍾)'
39    ,CASE [jstep].[on_fail_action]
40       WHEN 1 THEN '退出報告成功的作業'
41       WHEN 2 THEN '退出報告失敗的作業'
42       WHEN 3 THEN '轉到下一步'
43       WHEN 4
44       THEN '轉到步驟: '
45            + QUOTENAME(CAST([jstep].[on_fail_step_id] AS VARCHAR(3))) + ' '
46            + [sOFSTP].[step_name]
47     END AS '執行失敗后操作'
48 FROM [msdb].[dbo].[sysjobsteps] AS [jstep]
49 INNER JOIN [msdb].[dbo].[sysjobs] AS [job]
50         ON [jstep].[job_id] = [job].[job_id]
51 LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOSSTP]
52         ON [jstep].[job_id] = [sOSSTP].[job_id]
53            AND [jstep].[on_success_step_id] = [sOSSTP].[step_id]
54 LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOFSTP]
55         ON [jstep].[job_id] = [sOFSTP].[job_id]
56            AND [jstep].[on_fail_step_id] = [sOFSTP].[step_id]
57 LEFT JOIN [msdb].[dbo].[sysproxies] AS [px]--代理賬戶信息
58         ON [jstep].[proxy_id] = [px].[proxy_id]
59 ORDER BY [job].[name], [jstep].[step_id]

4.查看每個作業步驟執行情況

 1 SELECT
 2     [job].[job_id] AS '作業唯一標識符'
 3    ,[job].[name] AS '作業名稱'
 4    ,[jstep].[step_uid] AS '作業步驟唯一標識符'
 5    ,[jstep].[step_id] AS '步驟編號'
 6    ,[jstep].[step_name] AS '步驟名稱'
 7    ,CASE [jstep].[last_run_outcome]
 8       WHEN 0 THEN '失敗'
 9       WHEN 1 THEN '成功'
10       WHEN 2 THEN '重試'
11       WHEN 3 THEN '取消'
12       WHEN 5 THEN '未知'
13     END AS '上次運行狀態'
14    ,STUFF(STUFF(RIGHT('000000'
15                       + CAST([jstep].[last_run_duration] AS VARCHAR(6)), 6), 3,
16                 0, ':'), 6, 0, ':') AS [LastRunDuration (HH:MM:SS)]
17    ,[jstep].[last_run_retries] AS '上次運行重復執行次數'
18    ,CASE [jstep].[last_run_date]
19       WHEN 0 THEN NULL
20       ELSE CAST(CAST([jstep].[last_run_date] AS CHAR(8)) + ' '
21            + STUFF(STUFF(RIGHT('000000'
22                                + CAST([jstep].[last_run_time] AS VARCHAR(6)),
23                                6), 3, 0, ':'), 6, 0, ':') AS DATETIME)
24     END AS '上次運行時間'
25 FROM [msdb].[dbo].[sysjobsteps] AS [jstep]
26 INNER JOIN [msdb].[dbo].[sysjobs] AS [job]
27         ON [jstep].[job_id] = [job].[job_id]
28 ORDER BY [job].[name], [jstep].[step_id]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM