查看Job的执行History

SQL Server将Job的信息存放在msdb中,Schema是dbo,表名以“sysjob”开头。

1, 使用 msdb.dbo.sysjobs 和 msdb.dbo.sysjobsteps 查看Job和job的step,Step_ID 是从1 开始的。

select j.job_id,j.name,j.enabled,j.description,
    j.start_step_id,j.date_created,j.date_modified
from msdb.dbo.sysjobs j with(nolock)
where name =N‘xxx‘

2, 使用 msdb.dbo.sysjobhistory 查看 job 所有 Step的history,Step_id=0是对job整体的执行情况的一个历史记录。
run_time 和 run_duration 是int类型,格式是hhmmss。

select jh.instance_id,jh.job_id,jh.step_id,jh.step_name,jh.sql_message_id,jh.sql_severity,
    jh.message,jh.run_status,
    jh.run_date,jh.run_time,jh.run_duration
from msdb.dbo.sysjobhistory jh with(nolock)
where job_id=N‘07A53839-E012-4C80-9227-15594165B013‘
order by instance_id desc

--Status of the job execution:
-- 0 = Failed
-- 1 = Succeeded
-- 2 = Retry
-- 3 = Canceled

3,Job History的查询
Script1

--查看每个job最近10次执行情况
;with cte_job as
(
select j.job_id,j.name,j.enabled,
    jh.run_status,jh.message,jh.run_date,jh.run_time,jh.run_duration,jh.sql_message_id,jh.sql_severity,
    ROW_NUMBER() over(PARTITION by j.job_id ORDER by jh.run_date desc,jh.run_time) as rid
from msdb.dbo.sysjobs j with(nolock)
inner join msdb.dbo.sysjobhistory jh with(nolock)
    on j.job_id=jh.job_id
where jh.step_id=0
)
select c.name as JobName,c.enabled,c.run_status,c.message,
    c.run_date,c.run_time,c.run_duration,c.sql_message_id,c.sql_severity
from cte_job as c
where c.rid<=10
    --and c.name=N‘Filter_Job_Name‘
order by c.job_id,c.run_date desc,c.run_time desc

Script2

--查看job 最后一次执行的情况
DECLARE @Job_ID uniqueidentifier;

select @Job_ID=j.job_id
from msdb.dbo.sysjobs j with(nolock)
where j.name=N‘JobName‘

;with cte as
(
select jh.job_id,jh.run_date,jh.run_time,jh.run_status,
        ROW_NUMBER() over(PARTITION by jh.job_id order by jh.run_date desc,jh.run_time desc) as rid
from msdb.dbo.sysjobhistory jh with(NOLOCK)
where jh.step_id=0
    and jh.job_id=@Job_ID
)
, cte_Last AS
(
select job_id,Last_Run_Date=run_date,Last_Run_Time=run_time
from cte
where rid=2
)

select j.name as JobName,
    jh.step_id,jh.step_name,jh.run_status,jh.message,
    jh.run_date,jh.run_time,jh.run_duration
from  msdb.dbo.sysjobs j with(nolock)
inner join msdb.dbo.sysjobhistory jh with(nolock)
    on jh.job_id=j.job_id
inner join cte_last as cl
    on j.job_id=cl.job_id
where jh.run_date>cl.Last_Run_Date and jh.run_time>cl.Last_Run_Time
order by jh.step_id asc

参考文档:

SQL Server Agent Tables (Transact-SQL)

时间: 2024-10-25 22:33:30

查看Job的执行History的相关文章

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库 创建静态库:ar -rcs test.a *.o查看静态库:ar -tv test.a解压静态库:ar -x test.a 查看程序依赖的动态库:readelf -a xxx|grep library如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库.[email protected]:~/test$ arm-none-linux-gnueabi-readelf -a hello|grep "library&quo

以上的进程查看均可以执行“man 进程名”来查看进程的功能细节CentOS-6.5-NFS部署

nfs-server与nfs-client端配置一样 [[email protected] /]# uname -r    打印系统版本 2.6.32-431.el6.x86_64 [[email protected] ~]# rpm -aq nfs-utils portmap rpcbind        #检查nfs相关的包 nfs-utils-1.2.3-39.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 [[email protected] /]# tai

ORACLE查看SQL的执行次数/频率

在ORACLE数据库应用调优中,一个SQL的执行次数/频率也是常常需要关注的,因为某个SQL执行太频繁,要么是由于应用设计有缺陷,需要在业务逻辑上做出优化处理,要么是业务特殊性所导致.如果执行频繁的SQL,往往容易遭遇一些并发性的问题. 那么如何查看ORACLE数据库某个SQL的执行频率/次数呢? 有哪些途径方法呢? 方法1: 通过查询V$SQLAREA或V$SQL的EXECUTIONS来查看SQL的执行次数,但是这个值的有效性需要结合FIRST_LOAD_TIME来判断.因为V$SQLAREA

如何查看PostgreSQL正在执行的SQL

SELECT      procpid,      start,      now() - start AS lap,      current_query  FROM      (SELECT          backendid,          pg_stat_get_backend_pid(S.backendid) AS procpid,          pg_stat_get_backend_activity_start(S.backendid) AS start,        

查看MySQL记录执行过的SQL

第一种:查Slow query的SQL语法: log_slow_queries = /var/log/mysql/mysql-slow.log long_query_time = 2 (超过2秒的SQL语法记录起来,设短一点来记录除错也是一种方法.) 第二种:设MySQL Replication用binlog: log_bin = /var/log/mysql/mysql-bin.log (此档要用mysqlbinlog解来看, mysqlbinlog mysql-bin.000042| gre

pl/sql查看后台数据库执行语句

由于项目的原因,需要查看后台代码执行的查询语句以及检查其逻辑是否正确: 步骤:(1).首先在数据库里面刷新共享此 --刷新共享池alter system flush shared_pool; (2).在界面中操作你要查看后台直接的功能: (3).在PL/SQL数据库中执行以下语句: --查询用户最近执行的SQLselect sql_fulltext from v$sql where parsing_schema_name = '数据库名称' order by last_load_time;

[转帖]linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令

linux screen 命令详解,xshell关掉窗口或者断开连接,查看断开前执行的命令 https://binwaer.com/post/12.html yun install -y screen screen -S zhaobsh ping www.163.com 关闭xshell 再次连接 screen -ls 根据 pid 使用 screen -r pid 再次打开连接. 一.背景 系统管理员经常需要SSH 或者telent 远程登录到linux 服务器,经常运行一些需要很长时间才能完

Sql Server 查看当前正在执行的Sql 语句

查看Sql Server 当前正在执行的Sql 语句,可以使用 sys.sysprocesses 或 sys.dm_exec_requests,由于sys.sysprocesses是为了向后兼容而保留的,所以,推荐使用DMV:sys.dm_exec_requests 一,使用sys.sysprocesses Contains information about processes that are running on an instance of SQL Server. These proce

使用echo $? 查看命令成功执行的原理

转载于:http://blog.csdn.net/cmzsteven/article/details/49049387 在进行源代码编译,或者执行命令无法确认所执行的命令是否成功执行的情况下,我们都会使用 echo $? 来进行测试. 如果返回值是0,就是执行成功:如果是返回值是0以外的值,就是失败. 之前在学习的时候只是机械的接受了这个事实,没有考虑背后的原理. 这二天在查看资料的时候突然看到了"进程生命周期"的知识: 当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来