如果SQL Server作业已经在运行,它会跳过预定的运行吗?

78
如果您安排一个SQL Server作业每X分钟运行一次,并且它在上一次调用之前没有完成,那么在规定的分钟数到达之前,它会跳过该运行吗,还是会运行两个实例执行相同的步骤?
3个回答

96

在开始新迭代之前,SQL Server代理会检查作业是否已经在运行。 如果您有一个长时间运行的作业,并且其计划出现,它将被跳过直到下一个间隔。

您可以自己尝试一下。如果您尝试启动已经在运行的作业,您将收到相应的错误信息。


太棒了,这正是我想知道的。我有一个电子邮件检查器,有时需要一段时间才能下载大型电子邮件。因为它每分钟运行一次,所以如果第一个实例尚未完成,不应启动第二个作业实例,这非常重要。 - Daniel T.
有没有办法实现这个,我的意思是避免跳过并开始另一个作业的实例?或者只能创建另一个SQL作业来完成吗?谢谢。 - Ivan Rascon
@Jose,问题。我不想让SQL服务器说它是一个故障或错误。只是跳过。我怎样才能确保这样做?谢谢。 - arcee123

5
我相信如果正在运行,它就会跳过它。

2

您正在使用哪个版本的SQL Server?这似乎是一个非常容易测试的事情。设置一个带有WAITFOR的作业,将单行插入到表中,并将作业设置为在短时间内运行两次(小于WAITFOR DELAY的时间)。

在SQL Server 2005中运行此类测试时,会跳过重叠的运行。


2
我曾经考虑过这样做,但是通过谷歌搜索似乎更容易,然后就成功了。 - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接