查询作业基本信息和作业执行情况

SELECT
[jop].[job_id] AS '作业唯一标识符'
,[jop].[ name ] AS '作业名称'
,[dp].[ name ] AS '作业创建者'
,[cat].[ name ] AS '作业类别'
,[jop].[description] AS '作业描述'
, CASE [jop].[enabled]
WHEN 1 THEN '是'
WHEN 0 THEN '否'
END AS '是否启用'
,[jop].[date_created] AS '作业创建日期'
,[jop].[date_modified] AS '作业最后修改日期'
,[sv].[ name ] AS '作业运行服务器名称'
,[step].[step_id] AS '作业起始步骤'
,[step].[step_name] AS '步骤名称'
, CASE
WHEN [sch].[schedule_uid] IS NULL THEN '否'
ELSE '是'
END AS '是否分布式作业'
,[sch].[schedule_uid] AS '作业计划的唯一标识符'
,[sch].[ name ] AS '作业计划的用户定义名称'
, CASE [jop].[delete_level]
WHEN 0 THEN '不删除'
WHEN 1 THEN '成功后删除'
WHEN 2 THEN '失败后删除'
WHEN 3 THEN '完成后删除'
END AS '作业完成删除选项'
FROM [msdb].[dbo].[sysjobs] AS [jop]
LEFT JOIN [msdb].[sys].[servers] AS [sv]
ON [jop].[originating_server_id] = [sv].[server_id]
LEFT JOIN [msdb].[dbo].[syscategories] AS [cat]
ON [jop].[category_id] = [cat].[category_id]
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [step]
ON [jop].[job_id] = [step].[job_id]
AND [jop].[start_step_id] = [step].[step_id]
LEFT JOIN [msdb].[sys].[database_principals] AS [dp]
ON [jop].[owner_sid] = [dp].[sid]
LEFT JOIN [msdb].[dbo].[sysjobschedules] AS [jsch]
ON [jop].[job_id] = [jsch].[job_id]
LEFT JOIN [msdb].[dbo].[sysschedules] AS [sch]
ON [jsch].[schedule_id] = [sch].[schedule_id]
ORDER BY [jop].[ name ]

作业最后执行情况

SELECT
[job].[job_id] AS '作业唯一标示符'
,[job].[ name ] AS '作业名称'
, CASE WHEN [jobh].[run_date] IS NULL
OR [jobh].[run_time] IS NULL THEN NULL
ELSE CAST ( CAST ([jobh].[run_date] AS CHAR ( 8 )) + ' '
+ STUFF(STUFF( RIGHT ( ''
+ CAST ([jobh].[run_time] AS VARCHAR ( 6 )), 6 ),
3 , 0 , ':' ), 6 , 0 , ':' ) AS DATETIME)
END AS '最后执行时间'
, CASE [jobh].[run_status]
WHEN 0 THEN '失败'
WHEN 1 THEN '成功'
WHEN 2 THEN '重试'
WHEN 3 THEN '取消'
WHEN 4 THEN '正在运行'
END AS '最后执行状态'
,STUFF(STUFF( RIGHT ( '' + CAST ([jobh].[run_duration] AS VARCHAR ( 6 )), 6 ),
3 , 0 , ':' ), 6 , 0 , ':' ) AS '最后运行持续时间'
,[jobh].[message] AS '最后运行状态信息'
, CASE [jsch].[NextRunDate]
WHEN 0 THEN NULL
ELSE CAST ( CAST ([jsch].[NextRunDate] AS CHAR ( 8 )) + ' '
+ STUFF(STUFF( RIGHT ( ''
+ CAST ([jsch].[NextRunTime] AS VARCHAR ( 6 )),
6 ), 3 , 0 , ':' ), 6 , 0 , ':' ) AS DATETIME)
END AS '下次运行时间'
FROM [msdb].[dbo].[sysjobs] AS [job]
LEFT JOIN (
SELECT
[job_id]
, MIN ([next_run_date]) AS [NextRunDate]
, MIN ([next_run_time]) AS [NextRunTime]
FROM [msdb].[dbo].[sysjobschedules]
GROUP BY [job_id]
) AS [jsch]
ON [job].[job_id] = [jsch].[job_id]
LEFT JOIN (
SELECT
[job_id]
,[run_date]
,[run_time]
,[run_status]
,[run_duration]
,[message]
,ROW_NUMBER() OVER ( PARTITION BY [job_id] ORDER BY [run_date] DESC , [run_time] DESC ) AS RowNumber
FROM [msdb].[dbo].[sysjobhistory]
WHERE [step_id] = 0
) AS [jobh]
ON [job].[job_id] = [jobh].[job_id]
AND [jobh].[RowNumber] = 1
ORDER BY [job].[ name ]

查看每个作业步骤基本信息

SELECT
[job].[job_id] AS '作业唯一标识符'
,[job].[name] AS '作业名称'
,[jstep].[step_uid] AS '步骤唯一标识符'
,[jstep].[step_id] AS '步骤编号'
,[jstep].[step_name] AS '步骤名称'
,CASE [jstep].[subsystem]
WHEN 'ActiveScripting' THEN 'ActiveX Script'
WHEN 'CmdExec' THEN 'Operating system (CmdExec)'
WHEN 'PowerShell' THEN 'PowerShell'
WHEN 'Distribution' THEN 'Replication Distributor'
WHEN 'Merge' THEN 'Replication Merge'
WHEN 'QueueReader' THEN 'Replication Queue Reader'
WHEN 'Snapshot' THEN 'Replication Snapshot'
WHEN 'LogReader' THEN 'Replication Transaction-Log Reader'
WHEN 'ANALYSISCOMMAND' THEN 'SQL Server Analysis Services Command'
WHEN 'ANALYSISQUERY' THEN 'SQL Server Analysis Services Query'
WHEN 'SSIS' THEN 'SQL Server Integration Services Package'
WHEN 'TSQL' THEN 'Transact-SQL script (T-SQL)'
ELSE [jstep].[subsystem]
END AS '作业步骤类型'
,CASE
WHEN [px].[name] IS NULL THEN 'SQL SERVER代理服务账户'
ELSE [px].[name]
END AS '步骤运行账户'
,[jstep].[database_name] AS '执行数据库名'
,[jstep].[command] AS '执行命令'
,CASE [jstep].[on_success_action]
WHEN 1 THEN '退出报表成功的作业'
WHEN 2 THEN '退出报告失败的作业'
WHEN 3 THEN '转到下一步'
WHEN 4
THEN '转到步骤: '
+ QUOTENAME(CAST([jstep].[on_success_step_id] AS VARCHAR(3))) + ' '
+ [sOSSTP].[step_name]
END AS '执行成功后操作'
,[jstep].[retry_attempts] AS '失败时的重试次数'
,[jstep].[retry_interval] AS '重试间的等待时间(分钟)'
,CASE [jstep].[on_fail_action]
WHEN 1 THEN '退出报告成功的作业'
WHEN 2 THEN '退出报告失败的作业'
WHEN 3 THEN '转到下一步'
WHEN 4
THEN '转到步骤: '
+ QUOTENAME(CAST([jstep].[on_fail_step_id] AS VARCHAR(3))) + ' '
+ [sOFSTP].[step_name]
END AS '执行失败后操作'
FROM [msdb].[dbo].[sysjobsteps] AS [jstep]
INNER JOIN [msdb].[dbo].[sysjobs] AS [job]
ON [jstep].[job_id] = [job].[job_id]
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOSSTP]
ON [jstep].[job_id] = [sOSSTP].[job_id]
AND [jstep].[on_success_step_id] = [sOSSTP].[step_id]
LEFT JOIN [msdb].[dbo].[sysjobsteps] AS [sOFSTP]
ON [jstep].[job_id] = [sOFSTP].[job_id]
AND [jstep].[on_fail_step_id] = [sOFSTP].[step_id]
LEFT JOIN [msdb].[dbo].[sysproxies] AS [px]--代理账户信息
ON [jstep].[proxy_id] = [px].[proxy_id]
ORDER BY [job].[name], [jstep].[step_id]

查看每个作业步骤执行情况

SELECT
[job].[job_id] AS '作业唯一标识符'
,[job].[name] AS '作业名称'
,[jstep].[step_uid] AS '作业步骤唯一标识符'
,[jstep].[step_id] AS '步骤编号'
,[jstep].[step_name] AS '步骤名称'
,CASE [jstep].[last_run_outcome]
WHEN 0 THEN '失败'
WHEN 1 THEN '成功'
WHEN 2 THEN '重试'
WHEN 3 THEN '取消'
WHEN 5 THEN '未知'
END AS '上次运行状态'
,STUFF(STUFF(RIGHT(''
+ CAST([jstep].[last_run_duration] AS VARCHAR(6)), 6), 3,
0, ':'), 6, 0, ':') AS [LastRunDuration (HH:MM:SS)]
,[jstep].[last_run_retries] AS '上次运行重复执行次数'
,CASE [jstep].[last_run_date]
WHEN 0 THEN NULL
ELSE CAST(CAST([jstep].[last_run_date] AS CHAR(8)) + ' '
+ STUFF(STUFF(RIGHT(''
+ CAST([jstep].[last_run_time] AS VARCHAR(6)),
6), 3, 0, ':'), 6, 0, ':') AS DATETIME)
END AS '上次运行时间'
FROM [msdb].[dbo].[sysjobsteps] AS [jstep]
INNER JOIN [msdb].[dbo].[sysjobs] AS [job]
ON [jstep].[job_id] = [job].[job_id]
ORDER BY [job].[name], [jstep].[step_id]

SQL SERVER 查询Job作业基本信息及执行情况的更多相关文章

  1. 【原创】SQL SERVER 查询Job作业基本信息及执行情况

    查询作业基本信息和作业执行情况 SELECT [jop].[job_id] AS '作业唯一标识符' ,[jop].[ name ] AS '作业名称' ,[dp].[ name ] AS '作业创建 ...

  2. SQL Server 批量创建作业(备份主分区)

    一. 需求背景 在我的数据库实例中,有很多类似下图所示的数据库,这些数据库的名称是有规律的,每个数据库包含的表都是相同的,其中2个表是类似流水记录的表,表的数据量会比较大,占用的空间有几十G到上百G不 ...

  3. sql server 维护计划与作业关系区别

    sql server 维护计划与作业关系区别 对于二者的区别,你可以把维护计划看作是针对数据库进行维护的作业模板.自定义作业具有更广泛的用途,当然,也具有更复杂的操作.所以,如果 仅仅是做个数据库优化 ...

  4. [转] 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  5. SQL SERVER 查询性能优化——分析事务与锁(五)

    SQL SERVER 查询性能优化——分析事务与锁(一) SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三) 上接SQL SERVER ...

  6. SQL Server 查询性能优化 相关文章

    来自: SQL Server 查询性能优化——堆表.碎片与索引(一) SQL Server 查询性能优化——堆表.碎片与索引(二) SQL Server 查询性能优化——覆盖索引(一) SQL Ser ...

  7. 如何修改 SQL Server 代理主作业 (Transact-SQL)

    本主题介绍了如何使用存储过程修改 Microsoft SQL Server 代理主作业. 更改作业定义计划的详细信息 1.       执行 sp_update_schedule. 在作业中添加.更改 ...

  8. 利用SET STATISTICS IO和SET STATISTICS TIME 优化SQL Server查询性能

    首先需要说明的是这篇文章的内容并不是如何调节SQL Server查询性能的(有关这方面的内容能写一本书),而是如何在SQL Server查询性能的调节中利用SET STATISTICS IO和SET ...

  9. 如何找出你性能最差的SQL Server查询

    我经常会被反复问到这样的问题:”我有一个性能很差的SQL Server.我如何找出最差性能的查询?“.因此在今天的文章里会给你一些让你很容易找到问题答案的信息向导. 问SQL Server! SQL ...

随机推荐

  1. PHP $_SERVER的详细参数及说明

    $_SERVER['PHP_SELF']#当前正在执行脚本的文件名,与documentroot相关. $_SERVER['argv']#传递给该脚本的参数. $_SERVER['argc']#包含传递 ...

  2. SQL你必须知道的-查询聚合分组排序

    use MySchoolTwo    -- 简单查询    select * from Student    -- 话说这种查询的效率要比 * 要高级点    select sId , sName , ...

  3. 【windows核心编程】线程局部存储TLS

    线程局部存储TLS, Thread Local Storage TLS是C/C++运行库的一部分,而非操作系统的一部分. 分为动态TSL 和 静态TLS 一.动态TLS 应用程序通过调用一组4个函数来 ...

  4. 你是怎么理解“MVC”的

    MVC就是三个字母的组合,M-模型, V-视图, C-控制器. 这些在百度上随便一索就可以索到,而且网上对这三个部分的解释又过于笼统,使人没法完全理解MVC的含义.   这里我简单的谈谈我对MVC这三 ...

  5. CSAPP(1):数字的计算机表示——课后题

    2.65 int even_ones(unsigned x) 要求:return 1 when x contains an even number of 1s; 0 otherwise. 假设int ...

  6. JSON解析关联类型发生死循环 There is a cycle in the hierarchy!

    解决办法是忽略掉关联类型的数据,使用jsonConfig进行配置,代码如下: JsonConfig jsonConfig = new JsonConfig();  //建立配置文件 jsonConfi ...

  7. 将大数据利用 BCP 导出SqlServer数据到CSV

    --导出数据 --BCP [数据库]..[数据库表] out "d:\abc.csv" -c -t "|" -T bcp "SELECT * FROM ...

  8. lsof,nc

    安装nc, yum -y install nc; 用nc传输同步文件 A,被同步端-即需要备份复制端; tar -czvf - /|nc 192.168.1.204(同步机ip,复制文件位置机) 88 ...

  9. JVM内存结构

    前言 在Java语言开发过程中,out of memory错误是很常见的一种错误.对于JVM的内存结构有更深入的了解,更更好的帮我们排查此类问题,有效的避免此类问题发生.在JAVA 8中内存结构有进行 ...

  10. (转)从工程中删除Cocoapods

    1. 删除工程文件夹下的Podfile.Podfile.lock及Pods文件夹 2. 删除xcworkspace文件 3. 使用xcodeproj文件打开工程,删除Frameworks组下的Pods ...