对SQL Server 2008 R2中的作业步骤排序顺序

时间:2015-06-17 10:34:53

标签: sql-server sql-server-2008-r2 jobs agent

在SQL Server 2008 R2中,有一个sysjobhistory表。如果一个工作有几个步骤,那么它们都按照执行/完成的顺序列在那里。因此,如果没有并行运行的作业,如果所有内容都按顺序执行,我可以使用instance_id(降序)和step_id轻松查看属于一次执行作业的所有步骤:

instance_id  job_id  step_id      step_name  run_status
-------------------------------------------------------
         15  aaa           0  (Job outcome)           1
         14  aaa           3        step a3           1
         13  aaa           2        step a2           1
         12  aaa           1        step a1           1
         11  bbb           0  (Job outcome)           1
         10  bbb           2        step b1           1
          9  bbb           1        step b2           1
          8  aaa           0  (Job outcome)           1
          7  aaa           3        step a3           1
          6  aaa           2        step a2           1
          5  aaa           1        step a1           1

在这里,我可以轻松创建一个查询,以按执行顺序显示作业及其步骤。所以使用上面的数据,我想要实现的是这样的结果(我可以使用游标和临时表来创建我自己的排序顺序):

instance_id  job_id  step_id      step_name  run_status
-------------------------------------------------------
         15  aaa           0  (Job outcome)           1
         12  aaa           1        step a1           1
         13  aaa           2        step a2           1
         14  aaa           3        step a3           1
         11  bbb           0  (Job outcome)           1
          9  bbb           1        step b1           1
         10  bbb           2        step b2           1
          8  aaa           0  (Job outcome)           1
          5  aaa           1        step a1           1
          6  aaa           2        step a2           1
          7  aaa           3        step a3           1

首先按结果执行日期/时间顺序,然后按升序排列该特定作业的每个步骤。

但是,如果一项工作在另一份工作开始时仍在运作,那就不那么容易了:

instance_id  job_id  step_id      step_name  run_status
-------------------------------------------------------
         31  aaa           0  (Job outcome)           1
         30  aaa           1        step a1           1
         29  bbb           0  (Job outcome)           1
         28  bbb           1        step b1           1
         27  bbb           2        step b2           1
         26  aaa           2        step a2           1
         25  aaa           3        step a3           1

我怎么知道,例如instance_ids 31,30,26和25属于同一个作业aaa的执行?我可以在SSMS中查看一个日志文件,它显示我想要的 - 作业本身(带有step_id 0的记录)按执行日期排序,当我扩展作业时,它的所有步骤。因此,历史记录属于单个执行作业的信息是以某种方式存在的。我怎样才能获得这些信息?

0 个答案:

没有答案