Sql-Server

為什麼將 SQL 代理離線導致 WSFC 在被動節點上進行故障轉移?

  • August 13, 2021

我有 2 節點 Windows 故障轉移群集和仲裁磁碟。SQL 代理不是集群的資源。

我需要在伺服器上啟用服務代理;為此,我需要將 SQL 代理設置為離線,執行 tsql 語句,然後將其重新聯機。

但是,一旦我使用 SSMS 停止 SQL 代理,Windows 就會故障轉移到被動節點。我想,因為 SQL Agent 沒有在集群管理器中列為資源,所以我需要從活動節點停止它,進行更改,然後將其重新聯機。

問題是:

  1. 為什麼停止不屬於集群的服務會導致集群故障轉移?
  2. 在我的情況下,停止 SQL 代理的正確方法是什麼?以維護為例

我在測試集群上模擬了相同的操作,一切正常,集群沒有故障轉移。相同的集群結構,但沒有仲裁。

更新: 右鍵點擊集群名稱本身我可以在屬性類型下看到 SQL 代理。這是否意味著所有這些資源都在集群中,即使它們在“角色”下不可見?

在此處輸入圖像描述

如果您查看故障轉移群集管理器,如果您選擇故障轉移群集實例 (FCI) 角色的角色,然後選擇底部的“資源”選項卡,您將看到該角色實際上是使用 SQL Server 服務和SQL Server 代理服務作為該角色下的資源。

故障轉移集群管理器

當您停止代理服務時,Windows 群集檢測到它“意外”停止並故障轉移到另一個節點。

與其從 SSMS 或“服務”控制面板中的服務停止服務,不如右鍵點擊故障轉移群集管理器中的“SQL Server 代理”資源並在那裡停止該資源。這將導致 WSFC 了解您的意圖,並且不會進行故障轉移。相反,它會將 FCI 角色顯示為部分線上。要重新啟動 SQL 代理,請再次右鍵點擊該資源並使其聯機。

引用自:https://dba.stackexchange.com/questions/297983