Sql Server 系统表分析 (2) - 作业(job) 表
1. sysjobactivity 表
记录当前 SQL Server 代理作业活动和状态。
job_id :作业 ID
run_requested_date :请求运行作业的日期和时间
run_requested_source : 请求运行作业的请求者。 1 = SOURCE_SCHEDULER,4 = SOURCE_USER
start_execution_date :计划运行作业的日期和时间
job_history_id : 用于标识 sysjobhistory 表中的行。
next_scheduled_run_date :计划下一次运行作业的日期和时间。
2. sysjobhistory 表
包含有关 SQL Server 代理执行预定作业的信息
通俗易懂的说,就是记录 job 执行的历史情况,该表比较有用,能查看job执行的时间、状态、完成信息等。
job_id : job(作业) ID
step_id :job(作业)中的步骤ID,一个 job 中可以包含1个以上的步骤
step_name :步骤的名称
message:job(作业)执行信息,记录job是否执行成功,如若失败,则包含失败信息,十分的有用
run_status :作业的执行状态,0 = 失败,1 = 成功, 2 = 重试,3 - 已取消
run_data:作业或步骤开始执行的日期。
run_time:作业火步骤开始的时间
run_duration:执行作业或步骤所花费的时间,十分有用,单位是毫秒
3. sysjobs 表
SQL Server 代理执行的各个预定作业的信息
job_id:作业的唯一ID
name:作业的名称
enabled:作业是否被启用
description:作业的说明信息
start_step_id:执行作业的其实步骤 ID
category_id:作业类别的ID
delete_level:指示在何种情况下应在作业完成时删除作业 0 = 从不,1 = 成功时,2 = 作业失败时,3 = 作业完成时
data_created:作业的创建日期
date_modified:上次修改作业的日期
version_number:作业版本
4. sysjobservers 表
MSDN:存储特定作业与一个或多个目标服务器的关联或关系。
个人感觉,就是存储 作业(job) 最后一次执行的详情,此表对于观察job执行的最新信息,比较方便
job_id:作业标识号
last_run_outcome:作业上次运行的结果,0 = 成功,1 - 失败 , 3 - 取消
last_run_message:与 last_run_outcome 列关联的消息
last_run_date:上次作业运行的日期
last_run_time:上次作业运行的时间
last_run_duration:上次作业运行的持续时间
5. sysjobschedules 表
job(作业)下次执行的时间信息
schedule_id :计划ID
job_id:作业ID
next_run_date:计划运行作业的下一个日期
next_run_time:计划运行作业的时间
6. sysjobsteps 表
包含 SQL Server 代理要执行的作业中的各个步骤的信息。
job_id :作业的 ID
step_id:作业中的步骤 ID
step_name:作业步骤的名称
command:subsystem 要执行的命令,重要,可以直接得到步骤要执行的sql命令
last_run_duration :该步骤上次运行时的持续时间
7. sysjobstepslogs 表
包含所有 SQL Server 代理作业步骤的作业步骤日志,这些作业步骤配置为将作业步骤输出写入表中
log_id :作业步骤日志的ID
log:作业步骤日志的内容
date_created:创建作业步骤日志的日期和时间
log_size :作业步骤日志的大小
实战,获得最新作业(job)执行信息:
select top 150 a.run_date,a.run_time, b.name,step_id,step_name,a.message,a.run_status,a.run_duration
from msdb.dbo.sysjobhistory a ,msdb.dbo.sysjobs b
where a.job_id=b.job_id and name not in('job_exclude') and a.step_id>0
order by run_date desc
相关文章:
Sql Server 系统表分析(1) - 备份表
Sql Server 监控 Job 执行情况