我们使用sql Server 2008,并且通常运行18个小时并且有许多步骤.我已经搜索过,似乎找不到关于在执行期间修改作业时会发生什么的答案.以下是我今天执行期间对工作所做的更改的摘要:
1)我在’step 2’位置插入了一个新步骤.这项工作已经在第15步了,所以大概这个步骤在下次工作运行之前不会启动.
2)我删除了最后一步(步骤#30).
由于当我今天进行更改时,第15步正在进行中,我对最终步骤所做的更改是否会在作业到达今天时生效,还是仅在下次运行时生效?
此外,我在#2位置插入新步骤的事实是否会对当前运行产生不利影响步骤顺序?
解决方法
我在完成工作后检查了这份工作,现在得到了一个确定的答案.在作业执行时修改作业会影响作业的当前执行.根据作业历史记录,sql Server 2008处理作业的方式是基于步骤编号一次一步.在作业执行时,这些步骤不会加载到内存中或以其他任何方式存储.
在我的特定场景中,我在#2位置添加了一个步骤.这导致所有后续步骤编号在更新时递增1.当我更新它时,工作正在运行第15步,因此步骤#15在更新后成为#16.结果,当步骤#15结束时,再次执行相同的存储过程(新步骤#16).
此外,由于我删除了作业的最后一步,因此当作业到达该步骤时它没有被执行,因为它不再作为作业的一部分存在.
最重要的是,最佳做法是不要在执行期间更新作业.结果是可预测的,但除非您能够承受两次或根本不运行的步骤,否则不建议这样做.