我有两个 Job: A和 B.
Job A 不定期地运行。 Job B 设定为 每天 零点运行。 我现在想在 Job B 中加入一个步骤(此步骤为Job B 的第一个步骤),用来判断 Job A 是否在之前24小时内成功运行,如果成功运行则继续运行 Job B 中剩余的步骤,如果失败或没有运行,则不运行 Job B 中剩下的步骤。
请问可以用 T-sql 来实现这个步骤吗?具体怎么实现?sql server作业步骤

解决方案 »

  1.   

    一个job中的两个步骤需要连续运行,所以你这个想法需要使用两个job来实现。
      

  2.   

    通过查询
    msdb下的几个系统表
    sysjobs
    sysjobservers
    syscategories
    查询JOB的运行状态
      

  3.   

    我写的伪代码如下:
    declare @rows int;
    select @rows= count(*) from sysjobs (nolock) where jobname='Job A' and jobStatus='Succeeded' and jobRuntime > DateAdd(d,1,getdate())
    如果@rows =0 -- 没有发现这样的运行记录
        那么标记此步骤为失败。
    问题是:如何标记这个t-sql 步骤为失败呢? 
      

  4.   

    你从这个图中,创建两个job,如果第一个job失败,就转向下一步,也就是第二个job,成功就跳出,至于代码,可以用图中上面的【脚本】生成
      

  5.   

    我知道第一个步骤失败后的操作,问题是:怎样写一个T-sql 语句,让它查询到0条记录时标记为失败。
      

  6.   

    明白了,是用RAISERROR。多谢各位。