Windows集群在某些情况下是不稳定的,这容易影响到 alwayson ,导致某些节点使用不正常。
我们可以借 powershell 来定时检测, 如果是停止状态则重启集群服务。
定时工具我这里选择 SQL Server 的代理服务, 主要是使用比较方便, 比 Windows 计划任务方便一些, 当然, 你用计划任务也行。
首先, 将 SQL Server 代理服务的登录改为“本地系统账户”(不这样脚本会因权限不够而失败), 并重启代理服务:
第二, 新增一个SQL 作业, 作业的步骤要选择 PowerShell 类型:
脚本内容 ( 注: Wirte-Host 在SQL Server的PS脚本中无法识别 ):
$srv = Get-Service "ClusSvc"
if(($srv -and ($srv.Status.ToString() -eq 'Stopped'))){
$srv | Restart-Service
"restarted!"
}
计划设置为每分钟运行一次。
到此就完成了, 不放心的话可以手动运行试下是否能正常运行。