reset=参数定义无故障周期(单位秒),用于重置服务失败计数器;例如reset=86400表示一天内无失败则清零计数,否则三次失败后按actions=指定动作执行。
在 windows server 中,服务运行失败后的恢复操作间隔时间,是通过 sc failure 命令配置的,核心在于 reset= 参数——它定义了“无故障周期”,即从最后一次失败起,经过多少秒后重置失败计数器。
理解 reset= 参数的作用
Windows 服务默认对连续失败有计数机制(最多记 3 次)。只有当服务在指定的“无故障周期”内持续正常运行,失败次数才会清零。否则,第三次失败就会触发你设定的最终动作(如重启计算机)。这个周期就是 reset= 的值,单位是秒。
- 例如:
sc failure "MyService" reset= 3600 actions= restart/60000/restart/60000/restart/60000表示:若该服务 1 小时内未再失败,则失败计数归零;否则三次失败后每次间隔 60 秒执行重启 - 如果设为
reset= 0,表示不重置计数,只要发生三次失败就立即执行最终动作 - 该值不影响单次恢复动作之间的延迟(那是
actions=后面的毫秒数),只影响“失败计数是否清零”的判定窗口
配置前需确认服务状态与权限
必须以管理员身份运行命令提示符,且目标服务不能正在运行(建议先停止):
- 先停止服务:
net stop "MyService"或sc stop "MyService" - 执行配置命令:
sc failure "MyService" reset= 86400 actions= restart/5000/restart/5000/reboot/60000 - 重新启动服务:
net start "MyService" - 验证是否生效:
sc qfailure "MyService"可查看当前配置
注意与其他机制的配合
sc failure 设置的是系统级服务恢复策略,它和 Windows 事件日志、任务计划程序或 PowerShell 脚本中的自定义监控不冲突,但也不自动联动:
- 如果服务依赖其他组件(如数据库、网络),仅靠重启可能无法真正恢复,建议在
actions=中搭配run/调用诊断脚本 - 某些服务(如 W32Time、SQL Server Agent)自身有内置重试逻辑,sc failure 是兜底手段,不宜替代其原生容错设计
- 组策略中若启用了“恢复服务失败”策略,会覆盖 sc failure 的设置,此时应优先使用组策略统一管理











