Always On 可用性群組中的可用性複本已中斷連線
適用於:SQL Server
簡介
- 原則名稱:可用性複本連線狀態
- 問題:可用性複本已中斷連線
- 類別:重大
- Facet:可用性複本
Description
這項原則檢查可用性複本之間的連接狀態。 當可用性複本的連接狀態為 DISCONNECTED
時,原則為狀況不良。 否則原則為狀況良好。
可能的原因
次要複本未連線到主要複本。 連接狀態為 DISCONNECTED
。 發生此問題的原因可能是下列其中一個原因:
- 連接通訊埠可能與另一個應用程式衝突。
- 加密類型或演算法不符。
- 連接端點已刪除或未啟動。
- 防火牆發生網路/連線問題或連接埠遭到封鎖。
- 服務/啟動帳戶不是網域使用者,而且無法連線到 DC 和遠端節點與連接埠(如 5022)。
可能的解決方案
檢查主要複本與次要複本執行個體的資料庫鏡像端點組態,並更新不符的組態。 此外,請檢查連接埠是否有衝突,如果有,請變更連接埠號碼。
此問題的可能解決方案如下:
連接通訊埠可能與另一個應用程式衝突
執行下列命令來診斷連接埠問題:
$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 流量。
防火牆上的網路/連線問題或連接埠遭到封鎖
使用以下命令,測試 Node1
對 Node2
與 Node2
對 Node1
的雙向連線:
$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 和遠端節點
如要測試服務帳戶是否可以連線到遠端節點,請遵循下列步驟操作。 這些步驟會假設您未使用服務帳戶登入。
選取 [開始]>[Windows PowerShell]> 以滑鼠右鍵按一下圖示。
選取 [更多]>[以不同的使用者身分執行]>[使用其他帳戶]。
鍵入服務帳戶名稱和密碼。
Windows PowerShell 開啟後,請鍵入以下命令,確認您已使用服務帳戶登入:
whoami
您接著可以按照下列步驟,測試與遠端節點的連線。
$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