如果 SQL Server 作业已经在运行,它会跳过计划运行吗?
Posted
技术标签:
【中文标题】如果 SQL Server 作业已经在运行,它会跳过计划运行吗?【英文标题】:Will a SQL Server Job skip a scheduled run if it is already running? 【发布时间】:2010-10-26 06:55:22 【问题描述】:如果您安排 SQL Server 作业每 X 分钟运行一次,并且它在 # of minutes 结束之前没有完成上一次调用,它会跳过运行,因为它已经在运行,还是会运行两次执行相同步骤的作业实例?
【问题讨论】:
【参考方案1】:SQL Server 代理在开始新的迭代之前检查作业是否已经在运行。如果您有长时间运行的作业并且它的时间表出现了,它将被跳过,直到下一个间隔。
您可以自己尝试一下。如果您尝试启动一个已经在运行的作业,您将收到一个错误。
【讨论】:
太棒了,这正是我想知道的。我有一个电子邮件检查器,有时需要一段时间才能下载大型电子邮件。因为它每分钟运行一次,所以如果第一个作业尚未完成,第二个作业实例不会启动,这一点非常重要。 有什么办法可以实现这一点,我的意思是避免跳过并开始另一个工作实例?或者只是可以完成创建另一个 SQL 作业?谢谢 @Jose,问题。我不希望 SQL 服务器说这是错误或错误。刚刚跳过。我怎样才能确保是这样?谢谢【参考方案2】:如果它正在运行,我很确定它会跳过它。
【讨论】:
【参考方案3】:您使用的是哪个版本的 SQL Server?这似乎是一件很容易测试的事情。设置其中包含 WAITFOR 的作业,将单行插入表中,并将作业设置为快速连续运行两次(比 WAITFOR DELAY 短)。
在 SQL Server 2005 中运行此类测试时,它会跳过重叠的运行。
【讨论】:
我正在考虑这样做 - 但谷歌搜索似乎更容易......瞧以上是关于如果 SQL Server 作业已经在运行,它会跳过计划运行吗?的主要内容,如果未能解决你的问题,请参考以下文章
从SQL Server代理作业步骤调用时,SSIS包不会运行