KB4495663 - 修正:在 SQL Server 2016 和 2017 中,當分散式可用性群組的建立失敗時,會發生錯誤 41162

Applies To
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

症狀

假設您使用 Microsoft SQL Server 2016 或 2017。 當可用性群組在 DAG 刪除並重新建立之後立即加入現有的分散式可用性群組 (DAG) 時,它可能無法加入 DAG,並且您會收到類似於以下內容的錯誤訊息:

      

Always On:處理狀態為「FORWARDER」的 AG 'AGName' 的 AG 組態變更通知 (7) 。
錯誤:41162,嚴重性:16,狀態:0。
無法驗證可用性群組 'AGName' 設定的序號。  記憶體中的序號與保存的序號不相符。  可用性群組和/或本機可用性複本將自動重新啟動。  此時不需要使用者動作。
Always On:AR 'AGName' 現在正在處理通知 (類型 64) 。
Always On:處理狀態為「FORWARDER」的 AG 'AGName' 的 AG 組態變更通知 (7) 。
Always On:AR 'AGName' 現在正在驗證 WSFC 中的 AG 完整性。
Always On:AR 'AGName' 角色轉換 [FORWARDER] --> [FORWARDER],觸發程序 [VALIDATE_AG_CONFIG],狀態 (wsfc = 1,中繼資料 = 1) 。
Always On:AR 'AGName' 現在正在處理類型 -2) (通知。

此外,錯誤 41162 可能會造成 AG 解析狀態,並可能導致另外兩個問題:錯誤 19407 和判斷提示失敗。

      

錯誤 19407:

資料庫 DBName 中正在復原非合格交易,以進行 Always On Availability Groups 狀態變更。 預計復原完成度:100%。 這是一則資訊訊息。 不需要使用者動作。
[HaDrDbMgr::SetPrimaryAR]將主要設定為 AGID: AGNumber, ReplicaID: ReplicaNumber, AGDBID: AGDBNumber
錯誤:19407,嚴重性:16,狀態:2。
可用性群組 'GroupName' 與 Windows Server 容錯移轉叢集之間的租用已過期。 SQL Server 執行個體與 Windows Server 容錯移轉叢集之間發生連線問題。 若要判斷可用性群組是否正確容錯移轉,請檢查 Windows Server 容錯移轉叢集中對應的可用性群組資源。

斷言:

Always On:處理狀態為 'RESOLVING_NORMAL' (0) 的 AG 'DatabaseName' 的 AG 組態變更通知。
      

Always On:AR 'DatabaseName' 現在正在驗證 WSFC 中的 AG 完整性。
      

Always On:GetTransportWithRef () 遭到拒絕,因為本機 AR 未上線。
      

資料庫 'DatabaseName' 的狀態資訊 - 強化 Lsn: ' (34:304752:1) ' 提交 LSN: ' (0:0:0) ' 提交時間: 'Jan 1 1900 12:00AM'
      

復原 (DatabaseName, 6) :開始停止平行重做工作角色
      

**傾印執行緒 - spid = 0, EC = 0x000001F280CC7250
      

正在傳送堆疊傾印至 FileLocation
      

* 開始堆疊轉儲:
      

* 位置:“文件位置”:1774
      

* 運算式:GetContext () -GetController> () -GetHadrArRoleExternal> () == HADR_ROLE_FORWARDING_SECONDARY
      

* SPID: SPId
      

* 處理序識別碼: ProcessId
      

錯誤:17066,嚴重性:16,狀態:1。
      

SQL Server 判斷提示:檔案: <“Filelocation”>, line=1774 失敗判斷 = 'GetContext () -GetController> () -GetHadrArRoleExternal> () == HADR_ROLE_FORWARDING_SECONDARY'。 此錯誤可能與時間有關。 如果重新執行陳述式後仍持續發生錯誤,請使用 DBCC CHECKDB 來檢查資料庫的結構完整性,或重新啟動伺服器以確保記憶體內資料結構未損毀。
      

錯誤:3624,嚴重性:20,狀態:1。
      

系統判斷提示檢查失敗。 如需詳細資料,請檢查 SQL Server 錯誤記錄檔。 一般而言,判斷提示失敗是由軟體錯誤或資料損毀所造成。 若要檢查資料庫損毀,請考慮執行 DBCC CHECKDB。 如果您同意在安裝期間傳送傾印給 Microsoft,將會將迷你傾印傳送給 Microsoft。 更新可能會從 Microsoft 的最新 Service Pack 或技術支援的 Hotfix 中取得。
      

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

解決方式

此問題已在下列 SQL Server 累積更新中修正:

關於 SQL Server 的累積更新:
      

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

隨選 Hotfix 資訊:

此問題已在下列 SQL Server 隨選 Hotfix 中修正:

參考資料

了解 Microsoft 用來說明軟體更新的術語。