windows server中,系统崩溃后自动重启需在“启动和恢复”中启用“自动重新启动”,对应注册表autoreboot=1;服务自身失败则用sc failure命令配置重启策略,二者机制不同但可协同使用。
windows server 中,服务本身不会因“系统严重错误”(如蓝屏、bug check)而主动触发重启——那是操作系统内核层面的行为。但你可以配置服务在自身失败时自动重启,或让整个系统在发生崩溃后自动重启。两者目标相似,机制不同,需分清楚。
让系统在崩溃后自动重启
这是最常见也最直接的“出错即重启”设置,适用于蓝屏、内核停止错误等场景:
- 打开“系统属性”:右键“此电脑”→“属性”→左侧“高级系统设置”→“高级”选项卡→“启动和恢复”区域点“设置”
- 在“系统失败”下方,勾选“自动重新启动”
- 该选项默认开启;若被关闭,可通过命令一键启用:
wmic recoveros set AutoReboot = True - 对应注册表项为:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl\AutoReboot,设为 1
让特定服务在自身失败时重启
如果某个关键服务(如 SQL Server、IIS)频繁崩溃退出,可配置其失败响应策略,实现“服务挂了就拉起来”:
- 以管理员身份运行命令提示符,执行:
sc failure "ServiceName" reset= 86400 actions= restart/60000/restart/60000/restart/60000 - 说明:
•reset=86400表示 24 小时内失败计数清零
•actions=...表示前 3 次失败分别等待 60 秒后重启服务;第 4 次起按默认策略处理 - 也可用 PowerShell(Windows Server 2012+):
Set-Service -Name "ServiceName" -StartupType Automatic
再配合任务计划程序监听事件 ID 7031(服务意外终止)来触发自定义操作
补充:避免误触发与排查根本原因
自动重启只是兜底手段,不能替代问题诊断:
- 务必开启内存转储(在“启动和恢复”→“写入调试信息”中选“小内存转储”或“内核内存转储”),后续可用 WinDbg 分析 .dmp 文件定位崩溃模块
- 检查系统日志(事件查看器→Windows 日志→系统),筛选事件 ID 41(意外关机)、1001(Windows 错误报告)、7031(服务失败)
- 确认 BIOS/UEFI、驱动、固件均为最新版本,尤其注意 ACPI、存储控制器、网卡类驱动——它们是引发系统级崩溃的高频原因











