我有 2 节点 Windows 故障转移群集和仲裁磁盘。SQL 代理不是集群的资源。
我需要在服务器上启用服务代理;为此,我需要将 SQL 代理设置为脱机,运行 tsql 语句,然后将其重新联机。
但是,一旦我使用 SSMS 停止 SQL 代理,Windows 就会故障转移到被动节点。我想,因为 SQL Agent 没有在集群管理器中列为资源,所以我需要从活动节点停止它,进行更改,然后将其重新联机。
问题是:
为什么停止不属于集群的服务会导致集群故障转移?
在我的情况下,停止 SQL 代理的正确方法是什么?以维护为例
我在测试集群上模拟了相同的操作,一切正常,集群没有故障转移。相同的集群结构,但没有仲裁。
更新: 右键单击集群名称本身我可以在属性类型下看到 SQL 代理。这是否意味着所有这些资源都在集群中,即使它们在“角色”下不可见?
如果您查看故障转移群集管理器,如果您选择故障转移群集实例 (FCI) 角色的角色,然后选择底部的“资源”选项卡,您将看到该角色实际上是使用 SQL Server 服务和SQL Server 代理服务作为该角色下的资源。
当您停止代理服务时,Windows 群集检测到它“意外”停止并故障转移到另一个节点。
与其从 SSMS 或服务控制面板中的服务停止服务,不如右键单击故障转移群集管理器中的“SQL Server 代理”资源并在那里停止该资源。这将导致 WSFC 了解您的意图,并且不会进行故障转移。相反,它会将 FCI 角色显示为部分在线。要重新启动 SQL 代理,请再次右键单击该资源并使其联机。