Always On 可用性問號
在我的生產環境中,我有兩個數據庫伺服器,稱為DBN1和DBN2。我在兩個之間建立了一個集群,DBN1是我的主數據庫伺服器。現在,我在伺服器和數據庫上都使用了 Always on 可用性功能進行了同步。
今天我遇到一個問題。DBN1上有一個小問號圖示, DBN2始終在可用性屬性上顯示該圖示。此外,它也沒有顯示它是一個主數據庫。為什麼會這樣?
這是我的主伺服器輸出並按照箭頭
這是我的輔助伺服器輸出並按照箭頭
輔助副本不知道該副本的角色/
DBN1
狀態嘗試故障轉移到輔助節點時,主節點的狀態未知:
它找到目前的主副本,但沒有找到主副本的狀態。
從主伺服器進行故障轉移時,它確實會找到此資訊。
當您選擇輔助副本上帶有問號的副本的屬性時:
特性
角色:未知
而在主副本上,所有角色及其同步狀態都是已知的。
sys.dm_hadr_availability_replica_states
執行此查詢會在主要副本上返回多行,但僅在次要副本上返回次要行。
select * from sys.dm_hadr_availability_replica_states;
此行為將在故障轉移後逆轉。
額外檢查
當查看在次要副本上打開未知副本的屬性時執行的查詢時,
sys.dm_hadr_availability_replica_states
dmv 也與left join
更大的查詢一起使用。這裡一個有趣的部分是
OperationalState
專欄:ISNULL(arstates.operational_state, 6) AS [OperationalState],
這意味著如果副本不存在於該 dmv 中,例如在輔助節點上執行時,則返回
6
為OperationalState
.這種狀態在 dmv 的文件中沒有明確說明:
operation_state tinyint 副本的目前執行狀態,其中之一:
0 = 掛起的故障轉移
1 = 待處理
2 = 線上
3 = 離線
4 = 失敗
5 = 失敗,沒有法定人數
NULL = 副本不是本地的。
有關詳細資訊,請參閱本主題後面的角色和操作狀態。
該
'Unkown'
狀態也未在文件中註明。在這種情況下
6
,當角色未知時使用。
6
刷新輔助節點上的可用性副本時,它並不總是這樣:使用的查詢將未知副本的角色狀態設置為 3:
ISNULL(arstates.role, 3) AS [Role],
在 dmv 的文件中處於離線狀態。
並且連接狀態列將是
2
ISNULL(arstates.connected_state, 2) AS [ConnectionState],
文件中也沒有提到:
0:斷開連接。…
1:已連接。…