共用方式為


Always On 可用性群組中的可用性複本已中斷連線

適用於:SQL Server

簡介

  • 原則名稱:可用性複本連線狀態
  • 問題:可用性複本已中斷連線
  • 類別重大
  • Facet:可用性複本

Description

這項原則檢查可用性複本之間的連接狀態。 當可用性複本的連接狀態為 DISCONNECTED 時,原則為狀況不良。 否則原則為狀況良好。

可能的原因

次要複本未連線到主要複本。 連接狀態為 DISCONNECTED。 發生此問題的原因可能是下列其中一個原因:

可能的解決方案

檢查主要複本與次要複本執行個體的資料庫鏡像端點組態,並更新不符的組態。 此外,請檢查連接埠是否有衝突,如果有,請變更連接埠號碼。

此問題的可能解決方案如下:

連接通訊埠可能與另一個應用程式衝突

執行下列命令來診斷連接埠問題:

$server_name = "server_instance"  #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT type_desc, port FROM sys.tcp_endpoints WHERE type_desc = 'DATABASE_MIRRORING'; "

上一個命令會退回您必須在下列命令中使用的連接埠號碼。

$port = "5022"
Get-NetTCPConnection -LocalPort $port
Get-Process -Id (Get-NetTCPConnection -LocalPort $port).OwningProcess | Select-Object Name, ProductVersion, Path, Id

加密類型或演算法不符

在兩部伺服器上執行此命令,並比較加密,確保兩者都相同。

$server_name = "server_instance"  #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"

連接端點已刪除或未啟動

如果鏡像端點結束且已開始,請執行下列命令。

$server_name = "server_instance"  #replace with your SQL Server instance
sqlcmd -S $server_name -E -Q "SELECT name, state_desc, encryption_algorithm_desc, protocol_desc, type_desc FROM sys.database_mirroring_endpoints"

如果您懷疑端點未回應連線或未執行,請執行下列命令。

$server_name = "server_instance"  #use your SQL Server instance here
$server_name = "hadr_endpoint"    #replace with your endpoint name
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = stopped"
sqlcmd -S $server_name -E -Q "ALTER ENDPOINT hadr_endpoint STATE = started"

警告

使用 STATE = stopped 執行命令會停止端點,並暫時中斷 Always On 流量。

防火牆上的網路/連線問題或連接埠遭到封鎖

使用以下命令,測試 Node1Node2Node2Node1 的雙向連線:

$computer = "remote_node"      # replace with node name in your environment
$port = "5022"                 # replace with the port from your database_mirroring_endpoints
Test-NetConnection -ComputerName $computer -Port $port

帳戶不是網域使用者,且無法連線到 DC 和遠端節點

如要測試服務帳戶是否可以連線到遠端節點,請遵循下列步驟操作。 這些步驟會假設您未使用服務帳戶登入。

  1. 選取 [開始]>[Windows PowerShell]> 以滑鼠右鍵按一下圖示。

  2. 選取 [更多]>[以不同的使用者身分執行]>[使用其他帳戶]。

  3. 鍵入服務帳戶名稱和密碼。

  4. Windows PowerShell 開啟後,請鍵入以下命令,確認您已使用服務帳戶登入:

    whoami
    
  5. 您接著可以按照下列步驟,測試與遠端節點的連線。

    $computer = "remote_node" # replace with node name in your environment
    $port = "5022"            # replace with the port from your database_mirroring_endpoints
    Test-NetConnection -ComputerName $computer -Port $port