容錯移轉叢集疑難排解

適用於:SQL Server

本文提供下列問題的相關資訊:

基本疑難排解步驟

第一個診斷步驟是執行全新的叢集驗證檢查。 如需驗證的詳細資料,請參閱建立容錯移轉叢集:驗證組態。 這可以在不中斷服務的情況下完成,因為它不會影響任何線上叢集資源。

一旦安裝容錯移轉叢集功能之後,就能隨時執行驗證,包括在部署叢集之前、在叢集建立期間,以及在叢集正在執行時。 事實上,一旦叢集投入使用,就會執行其他測試,以檢查是否遵循高可用性工作負載的最佳實務。 在這數十項測試中,只有少數會影響正在運行的集群工作負載,而且這些都屬於存儲類別,因此跳過整個類別是避免中斷性測試的簡單方法。

容錯移轉叢集具有內建保護措施,可防止在驗證期間執行儲存測試時意外停機。 如果叢集在起始驗證時有任何線上群組,且儲存體測試仍保持選取狀態,則會提示使用者確認是否要執行所有測試 (並導致停機),或略過測試任何線上群組的磁碟以避免停機。 如果整個儲存類別已從測試中排除,則不會顯示此提示。 這可讓您在不停機的情況下進行叢集驗證。

如何重新驗證您的叢集

  1. 在 [容錯移轉叢集] 嵌入式管理單元的主控台樹狀結構中,確定已選取 [容錯移轉叢集管理],然後在 [管理] 底下,選取 [驗證組態]

  2. 遵循精靈的指示來指定伺服器和測試,然後執行測試。 執行測試之後,會出現 [摘要] 頁面。

  3. 當仍在 [摘要] 頁面上時,選取 [ 檢視報告 ] 以檢視測試結果。

    若要在關閉精靈之後檢視測試結果,請參閱%SystemRoot%\Cluster\Reports\Validation Report date and time.html%SystemRoot%安裝作業系統的資料夾 (例如 C:\Windows)。

  4. 若要檢視可協助您解譯結果的說明文章,請選取 [叢集驗證測試的詳細資訊]。

若要在關閉精靈之後檢視叢集驗證的說明文章,請在 [容錯移轉叢集] 嵌入式管理單元中,選取 [說明],選取 [說明主題],選取 [內容] 索引標籤,展開 [容錯移轉叢集說明] 的內容,然後選取 [驗證容錯移轉叢集設定]。 驗證精靈完成之後,[摘要報告] 將會顯示結果。 所有測試都必須通過,並顯示為綠色勾號,或者在某些情況下顯示為黃色三角形(警告)。 尋找問題區域 (紅色 X 或黃色問號) 時,請在報告中摘要測試結果的部分中,選取個別測試以檢閱詳細資料。 在疑難排解 SQL Server 問題之前,必須先解決任何被標示為紅色 X 的問題。

安裝更新

安裝更新是避免發生系統問題很重要的一部分。 有用的連結︰

從容錯移轉叢集故障中復原

通常,容錯移轉叢集失敗通常是由兩個原因之一所造成:

  • 雙節點叢集中其中一個節點發生硬體故障 這種硬體故障可能是因為 SCSI 卡或作業系統的錯誤所導致。

    若要從此失敗中復原,請使用 SQL Server 安裝程式將失敗的節點從容錯移轉叢集中移除、在電腦離線的情況下解決硬體失敗、將該電腦回復連線,然後將修復的節點重新加入容錯移轉叢集執行個體中。

    如需詳細資訊,請參閱 建立新的 Always On 容錯移轉叢集執行個體 (安裝程式)從容錯移轉叢集執行個體失敗中復原

  • 作業系統發生錯誤。 在此情況下,節點處於離線狀態,但不會不可挽回地中斷。

    若要從作業系統故障中復原,請復原節點並測試容錯移轉。 如果 SQL Server 執行個體無法正確容錯移轉,您必須使用 SQL Server 安裝程式從容錯移轉叢集中移除 SQL Server、進行必要的修復、讓電腦重新啟動,然後將修復的節點新增回容錯移轉叢集執行個體。

    以這種方式從作業系統故障中復原可能需要一些時間。 如果可以輕易復原作業系統錯誤,請避免使用這項技術。

    如需詳細資訊,請參閱 建立新的 Always On 容錯移轉叢集執行個體 (安裝程式)從容錯移轉叢集執行個體失敗中復原

解決常見問題

下列清單描述常見的使用狀況問題,並說明如何解決。

問題:使用錯誤的命令列提示語法安裝 SQL Server

問題 1: 從命令提示字元使用 /qn 交換器時,很難診斷安裝程式問題,因為 /qn 交換器會隱藏所有安裝程式對話方塊和錯誤訊息。 如果指定 /qn 開關,則所有設置訊息(包括錯誤訊息)都會寫入設置記錄檔。 如需記錄檔的詳細資訊,請參閱 檢視和讀取 SQL Server 安裝程式記錄檔

解決方案 1:使用 /qb 交換器而不是 /qn 交換器。 如果您使用 /qb 開關,將顯示每個步驟中的基本 UI,包括錯誤訊息。

問題:SQL Server 移轉至另一個節點之後,無法連線到網路

問題 1:SQL Server 服務帳戶無法與網域控制站連絡。

解決方法 1:檢查您的事件記錄檔,尋找是否有網路問題的相關記錄 (例如:介面卡失敗或 DNS 問題)。 確認您可以 Ping 您的網域控制站。

問題 2: SQL Server 服務帳戶密碼在所有叢集節點上都不相同,或節點不會重新啟動已從失敗節點移轉的 SQL Server 服務。

解決方法 2:使用 SQL Server 組態管理員來變更 SQL Server 服務帳戶密碼。 如果您不這樣做,而且您在一個節點上變更 SQL Server 服務帳戶密碼,您也必須變更所有其他節點上的密碼。 SQL Server 組態管理員會自動執行這項作業。

問題:SQL Server 無法存取叢集磁碟

問題 1: 韌體或驅動程式不會在所有節點上更新。

解決方法 1: 確定所有節點都使用正確韌體版本與相同的驅動程式版本。

問題 2: 節點無法復原已從具有不同磁碟機代號的共用叢集磁碟上失敗節點移轉的叢集磁碟。

解決方法 2: 叢集磁碟在這兩部伺服器上的磁碟機代號必須相同。 如果不是,請檢閱作業系統和 Microsoft 叢集服務 (MSCS) 的原始安裝。

問題:SQL Server 服務故障會導致容錯移轉

解決方法:若要防止特定伺服器的失敗導致 SQL Server 群組容錯移轉,請使用 Windows 中的叢集系統管理員來設定這些服務,如下所示:

  • 清除 [影響群組] 核取方塊;該核取方塊位於 [全文屬性] 對話方塊的 [進階] 索引標籤上。 不過,如果 SQL Server 造成容錯移轉,全文檢索服務就會重新啟動。

問題:SQL Server 不會自動啟動

解決方案: 使用 MSCS 中的「叢集管理員」自動啟動容錯移轉叢集。 SQL Server 服務應設定為手動啟動;您應該在 MSCS 中設定叢集系統管理員來啟動 SQL Server 服務。 如需詳細資訊,請參閱 管理服務

問題:網路名稱離線,您無法使用 TCP/IP 連線到 SQL Server

問題 1: 當叢集資源設為需要 DNS 時,DNS 會失敗。

解決方法 1: 更正 DNS 問題。

問題 2: 網路上有重複的名稱。

解決方案 2: 使用 nbtstat 尋找重複的名稱,然後更正問題。

問題 3: SQL Server 未使用具名管道連線。

解決方法 3: 若要使用具名管道來連線,請使用 SQL Server 組態管理員來建立別名以連線到適當的電腦。 例如,若您有一個包含兩個節點的叢集(節點 A節點 B),以及一個含有預設執行個體的容錯移轉叢集執行個體(Virtsql),則您可以利用下列步驟連線到其 Network Name 資源處於離線狀態的伺服器:

  1. 使用叢集系統管理員,判斷包含 SQL Server 執行個體的群組正在哪個節點上執行。 在此範例中,它是 節點 A

  2. 使用 net start,在該電腦上啟動 SQL Server 服務。 如需使用 net start的詳細資訊,請參閱 手動啟動 SQL Server

  3. 節點 A 上啟動 SQL Server 組態管理員。檢視伺服器正在接聽的管道名稱。 它應該類似於 \\.\$$\VIRTSQL\pipe\sql\query

  4. 在用戶端電腦上,啟動「SQL Server 組態管理員」。

  5. 建立別名 SQLTEST1,以透過具名管道連接至此管道名稱。 若要這麼做,請輸入 節點 A 作為伺服器名稱,並將管名稱編輯為 \\.\pipe\$$\VIRTSQL\sql\query

  6. 使用別名 SQLTEST1 作為伺服器名稱連線到此執行個體。

問題:SQL Server 安裝程式在叢集上失敗,錯誤為 11001

問題:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\Cluster中有一個孤立的登錄機碼。

解決方案: 請確定 MSSQL.X 登錄區分支目前未使用中,然後刪除叢集機碼。

問題:叢集設定錯誤:「安裝程式的權限不足,無法存取這個目錄:<磁碟機>\Microsoft SQL Server。 安裝無法繼續, 以管理員的身分登入或是連絡您的系統管理員」

發: 此錯誤是由未正確分割的 SCSI 共用磁碟機所造成。

解決方案: 使用下列步驟在共用磁碟上重新建立單一分割區:

  1. 從叢集中刪除磁碟資源。
  2. 刪除磁碟上的所有分割區。
  3. 在磁碟屬性中確認該磁碟是基本磁碟。
  4. 在共用磁碟上建立一個分割區,將磁碟格式化,並指定磁碟的磁碟機代號。
  5. 使用「叢集管理員」(cluadmin) 將磁碟加入叢集。
  6. 執行 SQL Server 安裝程式。

問題:應用程式無法在分散式交易中編列 SQL Server 資源

問題: 由於 Microsoft 分散式交易協調器(MS DTC)在 Windows 中未完全設置,因此應用程式可能無法在分散式交易中註冊 SQL Server 資源。 這個問題會影響使用分散式交易的連結伺服器、分散式查詢和遠端預存程序。 如需了解如何設定 MS DTC 的詳細資訊,請參閱 Before Installing Failover Clustering

解決方法:若要避免這類問題,您必須在已安裝 SQL Server 並設定 MS DTC 的伺服器上完整啟用 MS DTC 服務。

若要完整啟用 MS DTC,請使用下列步驟:

  1. 在 [控制台] 中,開啟 [系統管理工具] ,然後開啟 [電腦管理] 。

  2. 在 [電腦管理] 的左窗格中,展開 [服務和應用程式],然後選取 [ 服務]。

  3. 在 [電腦管理] 的右窗格中,以滑鼠右鍵按一下 [分散式交易協調器],並選取 [屬性]。

  4. [分散式交易協調器 ] 視窗中,選取 [ 一般 ] 索引標籤,然後選取 [停止] 以停止服務。

  5. [分散式交易協調器 ] 視窗中,選取 [登入] 索引標籤,然後設定登入帳戶 NT AUTHORITY\NetworkService

  6. 選取 [套用][確定 ] 以關閉 [分散式交易協調器 ] 視窗。 關閉 [電腦管理] 視窗。 關閉 [系統管理工具] 視窗。

問題:SQL Server Agent 無法連接到自訂埠上的多子網路故障轉移叢集實例

問題:當以下所有條件都成立時,SQL Server Agent 無法連接到本地 資料庫引擎:

  1. SQL Server 以多子網故障轉移叢集實例形式安裝。
  2. 故障轉移叢集實例是預設實例。
  3. 資料庫引擎會在預設的 1433 以外的固定 TCP 連接埠上接聽。
  4. SQL Server Agent 會在啟動時連接到本地實例。

對於多子網路故障轉移叢集實例,初始的 SQL Server Agent 連線使用 MultiSubnetFailover=Yes。 此設定會讓用戶端使用 TCP。 連線不會退回到共享記憶體或命名管線。 當目標是 (local) 且未指定埠時,連線嘗試使用 TCP 埠 1433。 如果 資料庫引擎 沒有在該埠監聽,連線就會失敗。

你可能會在 ODBC 走線中看到類似的連結:

DRIVER=ODBC Driver 17 for SQL Server;SERVER=(local);APP=SQLAgent - Initial Boot Probe;DATABASE=master;MultiSubnetFailover=YES;

解決方法:建立一個 TCP 別名,將 SQL Server Agent 連線導向故障轉移叢集實例的虛擬網路名稱及已設定的 TCP 埠。 在每個能承載故障轉移叢集實例的節點上設定別名。

步驟 1:確認已設定的 TCP 埠

  1. 在該活躍節點上,開啟 SQL Server 組態管理員
  2. 展開 SQL Server 網路設定,然後選擇 MSSQLSERVER 的協定
  3. 打開 TCP/IP,然後選擇 IP 位址標籤
  4. 如果 Listen All 設為 Yes,請注意 IPAll 下的 TCP 埠值。
  5. Listen All 設為 No,請注意故障轉移叢集實例所使用的每個啟用 IP 位址的 TCP 埠 值。
  6. 確認 SQL Server 錯誤日誌是否顯示 資料庫引擎 正在監聽預期的埠口。

如需詳細資訊,請參閱設定 SQL Server 在特定 TCP 通訊埠上接聽

步驟 2:在每個叢集節點建立 TCP 別名

在每個可承載故障轉移叢集實例的節點上完成以下步驟:

  1. 打開適用於已安裝 SQL Server 版本的 SQL Server 用戶端別名設定工具。
  2. 建立一個新的別名。
  3. 別名中,輸入本地 SQL Server Agent 連線的唯一名稱。 每個節點都使用相同的別名名稱。
  4. 選擇 TCP/IP 作為協定。
  5. 伺服器中,輸入故障轉移叢集實例的虛擬網路名稱。 不要輸入實體節點名稱。
  6. 埠號中輸入步驟 1 中識別的固定 TCP 埠。
  7. 把化名留著。

如需詳細說明與版本需求,請參閱 為用戶端建立或刪除伺服器別名

Important

SQL Server 別名是一種用戶端設定。 在每個能擁有故障轉移叢集實例的節點上建立相同的別名。 否則,當實例移動到未設定別名的節點時,SQL Server Agent 可能會失敗。

步驟 3:設定 SQL Server Agent 以使用別名

  1. 在 SQL Server Management Studio 中,連接到故障轉移叢集實例。
  2. 物件總管 中,展開實例。
  3. 右鍵點選 SQL Server Agent,然後選擇屬性
  4. 選擇頁面中,選擇 連結
  5. Alias 本地主機伺服器中,輸入步驟 2 中建立的別名名稱。
  6. 請選擇 [確定]
  7. 重新啟動 SQL Server Agent。

欲了解更多資訊,請參閱「為 SQL Server Agent 服務設定 SQL Server 別名」。

步驟 4:驗證配置

  1. 確認 SQL Server Agent 是否成功啟動。
  2. 檢視 SQL Server Agent 日誌,確認該代理已連接到預期的本地 資料庫引擎 實例。
  3. 執行一個簡單的 SQL Server Agent 工作,確認工作能連接到實例。
  4. 在不會干擾正常業務活動的時候,將故障轉移叢集實例移至另一個可能的擁有者節點。
  5. 確認 SQL Server Agent 啟動且測試工作在該節點成功。
  6. 對每個可能的擁有者節點重複測試。

使用擴充預存程式和 COM 物件

當您使用具有容錯移轉叢集組態的擴充預存程序時,所有擴充預存程序都必須安裝在與 SQL Server 相依的叢集磁碟上。 這麼做可確保當節點容錯移轉時,仍可使用擴充預存程序。

如果擴充預存程序使用 COM 元件,系統管理員必須將 COM 元件登錄在叢集的每一個節點上。 載入與執行 COM 元件的資訊必須位於作用中節點的登錄中,才能建立該元件。 否則,資訊仍會留在第一次登錄 COM 元件的電腦登錄中。