我们有一台 2012 服务器,上面有大约 20 个用于监控的计划任务。我们构建了一台 2016 服务器来替换它,当我将任务移至新服务器时,我遇到了一个问题。我们的大多数任务每隔几分钟运行一次。
在 Server 2012 中,我们会安排任务在当天凌晨 12:00 开始(即过去的某个时间),并每隔 X 分钟重复一次。任务将在下一个安排的时间开始。完美。
在 Server 2016 中,过去启动的计划不会运行。所以我们必须将其安排在将来启动。这在重新启动之前都是可以的。现在启动时间是过去的时间,它不会运行。它甚至没有记录失败的运行。下次运行时间列显示它应该运行,但没有运行。
除了创建两个触发器,一个在将来启动,另一个在重启时启动(我们不想这样做,因为有些任务应该只在指定的时间运行),还有更好的方法吗?这似乎是一个错误。2012 版本运行良好。
更新
有一个解决方法。创建一个无限期运行的一次性计划。这在重新启动后会像您期望的那样工作。我知道这对于“奇怪”的计划来说并不好,但对于我们想要每 3 分钟或其他时间运行一次的事情来说却很好。
答案1
仅供参考 - 我已通过昨天开具的支持单向 Microsoft 确认这是一个错误。支持技术人员确认它已被内部归类为错误,并且正在开发补丁。我被告知补丁的发布日期为 7 月/8 月。
这会影响 Windows 10 和 Server 2016。我的测试系统已打上昨天的累积更新补丁。Server 2012 R2 和 Windows 7 中没有出现此问题。
编辑 - 截至可能是 2017 年 8 月,但肯定是 2017 年 9 月,该问题已在我测试过的系统上得到修复。
答案2
该问题似乎只影响Repeat task every: ...
设置了选项的任务。
到目前为止,我的印象是,这只是一种在任务计划程序中trigger at X, then repeat every 10 minutes
编写的不必要的复杂方式。trigger at every xx:x0
显然不是。显然,它的意思正是它所说的:任务是在X
然后,只有那时它重复了。没有初始触发器,没有重复。我似乎没有简单的方法可以trigger at every xx:x0
在任务计划程序中进行安排(或者有吗?这可能是一个很好的单独的 Serverfault 问题。)“下次运行时间”列显示不同内容这一事实并没有多大帮助。
我们通过安排任务在 12:00 运行来“解决”这个问题每一个天(而不是一天),然后每...
分钟重复一次,持续 1 天。这意味着如果重新启动,则在 12:00,任务将恢复。这不是理想的,但在这里是可以接受的折衷方案。
我想您可以通过每小时创建一个触发器并让任务在之后的...
1 小时内每分钟重复一次来将“任务停机时间”降低到 1 小时。
令人惊讶的是,似乎一直都是这样(见第一条评论对此答案),我们直到现在才注意到。根据链接答案的其他评论,解决此问题的规范方法是激活该Run task as soon as possible after a scheduled start is missed
选项。
所以,是的,这是一个错误,但有错误的地方是“下次运行时间”列,而不是实际的调度。
答案3
1。Windows 2016 Server 在您的工作中必然需要这些选项:
- 错过计划启动后尽快运行任务或
- 如果任务失败,则重新启动每个
2. 添加附加触发器。如:
- 创建或编辑任务时
- 你几时开始
等的含义:将任务移动到所需的时间开始
3. 在 Windows 2016 的某些任务中 — — 实现了这种方法。