【发布时间】:2019-01-23 14:42:55
【问题描述】:
作为测试,我创建了一个包含 2 个步骤的作业。第一步添加一个新的jobstep作为step 2,添加的step等待10秒然后退出job报告成功。下一步会产生错误,但在添加新步骤后,永远不应该运行它。
查看作业历史,实际发生的是新作业步骤作为步骤2成功添加,步骤2的名称是添加步骤的名称,但是步骤2生成步骤3应该在此的错误点,即使不应该运行第 3 步。
本质上,它就像第 2 步不存在一样运行。在作业历史记录中,步骤 2 被称为正确的步骤名称,但运行的代码实际上是步骤 3。
【问题讨论】:
-
首先,有一个创建一个步骤的步骤就像一个循环引用。这是个坏主意,这听起来像是XY Problem。这里的真正目标是什么?一个问题是 On success 操作 没有指向正确的步骤。另外,不要纠结于步骤名称……这不是引用它们的方式。它们有 step_id 和 step_uid (每个步骤都是唯一的)。此外,我们需要查看您的代码以重现您正在执行的操作...
-
很难共享代码,因为我在 SQL Server Management Studio 的界面中构建了作业,并且有一些存储过程。真正的目标是一种只在工作日运行工作的偷工减料的方式。如果不是工作日,我希望添加一个工作步骤,作为第 2 步成功退出工作,这样可以避免运行其余的工作。听起来我可能不得不找到另一种方法来做到这一点。
-
有一个更简单的方法。您如何确定工作日?将其放在步骤 1 中。如果评估结果为假,则退出作业。否则转到第 2 步
-
@scsimon 有。这是我在一些具有非常特殊运行时要求的工作中使用的。如果您只需要 M-F 工作日,您可以将作业计划的频率更改为每周并选择您希望它运行的日期。
-
@scsimon 如何在一个步骤中从存储过程中退出作业?我之前研究过这个问题,除了将工作日检查纳入每个步骤之外找不到解决方案,我试图避免这种情况。
标签: sql-server tsql sql-server-2014 jobs