集群服务器SQL Server实例无法联机,故障转移操作报错求助
我之前处理过好几次类似的SQL Server集群故障转移失败的问题,结合你给出的错误日志,给你整理了一套针对性的排查和解决步骤,应该能帮你搞定:
故障分析
先拆解下你遇到的两个核心错误:
系统目录错误:Generic service 'GxClusPlugIn (Win001) (Instance001)' could not be brought online (with error '1060')
错误码1060对应的是指定的服务未作为已安装服务存在,这是核心诱因——第三方集群插件服务GxClusPlugIn在目标节点Win002上缺失,导致集群资源依赖链断裂。
应用程序日志错误:[sqsrvres] OnlineThread: Could not connect to server but server is considered up
这个是连锁反应:集群的SQL资源脚本(sqsrvres.dll)尝试联机SQL实例,但因为前置依赖的插件服务无法启动,导致连接失败,进而触发这个报错。
分步解决步骤
1. 修复GxClusPlugIn服务缺失问题
- 登录Win002服务器,打开
services.msc,搜索GxClusPlugIn (Win001) (Instance001),如果找不到,说明该插件服务未在Win002上安装:- 找到该插件的安装包(和Win001上同版本),在Win002上执行安装,确保服务名称与Win001完全一致。
- 如果找不到安装包,可以参考Win001上该服务的路径(在
services.msc中右键服务→属性→可执行文件路径),然后在Win002上用命令行注册服务:
注意:sc create "GxClusPlugIn (Win001) (Instance001)" binPath= "C:\实际路径\GxClusPlugIn.exe" DisplayName= "GxClusPlugIn (Win001) (Instance001)" start= demandbinPath=、start=后面必须跟一个空格,否则命令会报错。
- 安装/注册完成后,手动启动该服务,确认能正常运行。
2. 验证集群资源依赖配置
- 打开故障转移集群管理器,找到SQL001实例所在的资源组:
- 右键SQL Server资源→属性→依赖项,检查是否将
GxClusPlugIn服务列为依赖项。如果是,确保该服务已配置为集群资源(而非仅本地服务)。 - 如果
GxClusPlugIn不是集群资源,需要将其添加到同一资源组中,设置正确的依赖关系(插件服务先联机,再启动SQL Server)。
- 右键SQL Server资源→属性→依赖项,检查是否将
3. 排查SQL Server实例本身的可用性
- 登录Win002,打开SQL Server配置管理器,确认SQL001实例的服务已安装(集群节点应该已预先安装),启动类型设置为“自动”(集群会接管启动,但手动确认避免异常)。
- 尝试手动启动Win002上的SQL001实例服务,如果启动失败,查看SQL Server错误日志(默认路径:
C:\Program Files\Microsoft SQL Server\MSSQLXX.SQL001\MSSQL\Log\ERRORLOG),定位具体启动失败原因(比如权限不足、文件损坏等)。 - 如果手动启动成功,回到故障转移集群管理器,右键SQL001资源→刷新,再尝试执行故障转移操作。
4. 确保集群节点一致性
- 检查Win001和Win002上的SQL Server版本、补丁级别完全一致(集群节点补丁不匹配是常见的故障转移障碍)。
- 验证节点间网络通信正常:用
ping Win001、ping Win002测试连通性,执行cluster node /status命令确认两个节点状态均为“Up”。
内容的提问来源于stack exchange,提问作者DBALUKE HUANG
相关产品推荐
相关产品推荐

