• 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]
  • 相关阅读:
    C语言II博客作业04
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    C语言学期总结
    计科二班李英本周第一次作业
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
  • 原文地址:https://www.cnblogs.com/lgx5/p/15832381.html
Copyright © 2020-2023  润新知