判斷在可用性複本之間連線失敗的可能原因

適用于:SQL Server (所有支援的版本)

實體、作業系統或SQL Server問題可能會導致兩個可用性複本之間的會話失敗。 可用性複本不會定期檢查依賴 sqlservr.exe 的元件,以確認它們是否正常運作或失敗。 不過,針對某些類型的失敗,受影響的元件會將錯誤回報給 sqlservr.exe 。 由其他元件所報告的錯誤稱為「重大錯誤」(Hard Error)。

若要偵測其他不會注意到的失敗,Always On可用性群組會實作自己的會話逾時機制。 會話逾時期間是以秒為單位指定。 逾時期限是伺服器執行個體在將另一個執行個體視為中斷連接之前,等待接收該執行個體發出之 PING 訊息的最長時間。 如果兩個可用性複本之間發生工作階段逾時,可用性複本會假設失敗已經發生,並宣告「軟體錯誤」

重要事項

系統無法偵測主要資料庫以外之資料庫中的失敗。 此外,除非是因為資料磁碟錯誤而重新啟動資料庫,否則不太可能偵測得到資料磁碟錯誤。

錯誤偵測的速度以及失敗的反應時間,取決於錯誤為硬性或軟性。 某些硬性錯誤,如網路失敗,會立即報告。 不過,有些情況下,元件專用的逾時期限可以使某些硬性錯誤延遲報告。 至於軟體錯誤,工作階段逾時期限的長度將決定錯誤偵測的速度。 此期限長度預設為 10 秒。 這是最小的建議值。

因硬性錯誤而失敗

硬性錯誤的可能原因包括 (,但不限於下列條件) :

  • 連接或連線中斷
  • 網路卡損毀
  • 路由器變更
  • 防火牆變更
  • 端點重新設定
  • 找不到交易記錄所在的磁碟機
  • 作業系統或處理序失敗

例如,當主資料庫的記錄磁片磁碟機沒有回應且失敗時,作業系統會 sqlservr.exe 通知發生嚴重錯誤。

某些元件,例如網路元件和某些 I/O 子系統,都有自己的逾時來判斷失敗。 這類逾時與Always On可用性群組無關,這些群組並不知道其行為。 在這些情況下,逾時延遲會增加從失敗發生到可用性複本收到產生的硬性錯誤之間的時間。

注意

唯一針對可用性複本執行的主動錯誤檢查,只會在發生軟體錯誤的情況下進行。 如需詳細資訊,請參閱本主題後面的「軟性錯誤造成的失敗」。

為了協助您解讀網路上發生的錯誤狀況,請詢問網路工程師,在 TCP 連接發生下列事件時,會將什麼錯誤訊息傳送至通訊埠:

  • DNS 無法運作。
  • 未插上纜線。
  • Microsoft Windows 具有封鎖特定埠的防火牆。
  • 正在監視通訊埠的應用程式失敗。
  • 已重新命名 Windows 伺服器。
  • 已重新啟動 Windows 伺服器。

注意

Always On可用性群組無法防範存取伺服器之用戶端特有的問題。 例如,試想一個情況,公用網路介面卡處理對主要複本的用戶端連接,而私人網路介面卡則處理裝載可用性群組之複本的伺服器執行個體之間的流量。 在這個情況下,公用網路介面卡的失敗將會阻止用戶端存取資料庫。

因軟性錯誤而失敗

可能導致會話逾時的條件包括 (,但不限於下列) :

  • 網路錯誤,例如 TCP 連結逾時、卸除或損毀的封包或順序不正確的封包。

  • 未回應的作業系統、伺服器或資料庫。

  • Windows 伺服器逾時。

  • 運算資源不足,例如 CPU 或磁碟負擔過重、交易記錄已滿,或系統的記憶體或執行緒用盡。 在這些情況下,您必須增加逾時期限、降低工作負載或更換硬體來因應工作負載。

會話逾時機制

因為伺服器實例無法直接偵測軟性錯誤,所以軟性錯誤可能會導致可用性複本無限期地等候會話中其他可用性複本的回應。 若要避免這種情況,Always On可用性群組會根據連線的可用性複本,根據每個開啟連線的固定間隔傳送 Ping 的會話逾時機制。 在逾時期限接收到 Ping,表示連接仍為開啟狀態,且伺服器執行個體是透過它進行通訊。 接收到 Ping 時,複本會重設它在該連接上的逾時計數器。 如需可用性模式和會話逾時關聯性的相關資訊,請參閱可用性模式 (Always On可用性群組)

主要和次要複本會互相執行 Ping,讓對方知道他們仍在作用中,而工作階段逾時限制則可防止任一複本無限期地等候接收來自另一複本的 Ping。 工作階段逾時限制是使用者可設定的複本屬性,其預設值為 10 秒。 在逾時期限接收到 Ping,表示連接仍為開啟狀態,且伺服器執行個體是透過它進行通訊。 接收到 Ping 時,可用性複本會重設它在該連接上的逾時計數器。

如果會話逾時期間內沒有從其他複本收到 Ping,連線就會逾時。連線已關閉,而逾時複本會進入 DISCONNECTED 狀態。 即使已中斷連線的複本設定為同步認可模式,交易也不會等待該複本重新連線並重新同步處理。

回應錯誤

不論錯誤的類型為何,偵測到錯誤的伺服器執行個體都會根據執行個體的角色、工作階段的可用性模式和工作階段中其他連接的狀態,進行適當的回應。 如需遺失合作夥伴時發生狀況的詳細資訊,請參閱可用性群組 (Always On可用性群組)

另請參閱

下一步