您好,登錄后才能下訂單哦!
18、 Sys. dm_hadr_database_replica_states
為其返回AlwaysOn可用性組中的參與每個數據庫的行的本地實例SQL Server正承載其可用性副本。此動態管理視圖公開與主副本和輔助副本有關的狀態信息。在輔助副本上,此視圖為服務器實例上的每個輔助數據庫都返回一行。在主副本上,此視圖為每個主數據庫都返回一行,并且為相應的輔助數據庫另外返回一行。
重要
根據操作和更高級別的狀態,數據庫狀態信息可能不可用或過期。此外,這些值僅具有本地相關性。例如,在主副本的值 last_hardened_lsn 列反映到主副本當前可用的給定輔助數據庫有關的信息,不實際強制寫入的LSN值輔助副本當前可能具有。
列名 |
數據類型 |
說明(針對主副本) |
database_id |
int |
數據庫的標識符,在SQL Server的實例內是唯一的。這是相同的值中所示 Sys.databases目錄視圖。 |
group_id |
uniqueidentifier |
數據庫所屬的可用性組的標識符。 |
replica_id |
uniqueidentifier |
可用性組內可用性副本的標識符。 |
group_database_id |
uniqueidentifier |
可用性組內數據庫的標識符。在此數據庫聯接到的每個副本上,該標識符都是相同的。 |
is_local |
bit |
可用性數據庫是否是本地的,可以是下列值之一: 0 = 數據庫對于SQL Server實例而言不是本地的。 1 = 數據庫對于服務器實例而言是本地的。 |
is_primary_replica |
bit |
如果副本是主要副本則返回1;如果副本是輔助副本則返回0。 適用范圍:SQL Server 2014(12.x)到SQL Server 2017。 |
synchronization_state synchronization_state_desc |
tinyint nvarchar(60) |
數據移動狀態,以下值之一。 0 = NOT SYNCHRONIZING 未同步。 1 = SYNCHRONIZING 正在同步。 2 = SYNCHRONIZED 已同步。 3 = REVERTING 恢復。 4 = INITIALIZING 正在初始化。 |
is_commit_participant |
bit |
0 = 就此數據庫而言,事務提交未同步。 1 = 就此數據庫而言,事務提交同步。 對于異步提交可用性副本上的數據庫,該值始終為0。 對于同步提交可用性副本上的數據庫,該值僅在主數據庫上是準確的。 |
synchronization_health synchronization_health_desc |
tinyint nvarchar(60) |
反映聯接到可用性副本上的可用性組的數據庫的同步狀態和可用性副本(同步提交或異步提交模式)之一的可用性模式的交集以下值。 0 = NOT_HEALTHY 不正常。數據庫 Synchronization_state是0(NOT SYNCHRONIZING)。 1 = PARTIALLY_HEALTHY 不完全正常。如果同步提交可用性副本上的數據庫 synchronization_state為1(SYNCHRONIZING)被視為完全正常。 2 = HEALTHY 正常。如果同步提交可用性副本上的數據庫 synchronization_state為2(SYNCHRONIZED)和異步提交可用性副本上的數據庫 synchronization_state為1(SYNCHRONIZING)被視為正常。 |
database_state database_state_desc |
tinyint nvarchar(60) |
0 = ONLINE 聯機 1 = RESTORING 正在還原 2 = RECOVERING 正在恢復 3 = RECOVERY_PENDING 恢復掛起 4 = SUSPECT 可疑 5 = EMERGENCY 緊急 6 = OFFLINE 脫機 注意: 與Sys.databases 中的state和 state_desc列相同。 |
is_suspended |
bit |
數據庫狀態,可以是下列值之一: 0 = 已恢復 1 = 已掛起 |
suspend_reason suspend_reason_desc |
tinyint nvarchar(60) |
如果數據庫處于已掛起狀態,則為已掛起狀態的原因,可以是下列值之一: 0 = SUSPEND_FROM_USER = 用戶手動掛起的收據移動 1 = SUSPEND_FROM_PARTNER = 在強制故障轉移后掛起數據庫副本/掛起來自伙伴 2 = SUSPEND_FROM_REDO = 在重做階段中出錯 3 = SUSPEND_FROM_CAPTURE = 在捕獲主副本上的日志時出錯 4 = SUSPEND_FROM_APPLY = 在將日志寫入文件時出錯(請參閱錯誤日志) 5 = SUSPEND_FROM_RESTART = 在重新啟動數據庫前掛起數據庫副本(請參閱錯誤日志) 6 = SUSPEND_FROM_UNDO = 在撤消階段中出錯(請參閱錯誤日志) 7 = 重新驗證 8 = 計算輔助副本同步點時出錯 SUSPEND_FROM_REVALIDATION = 在重新連接時檢測到了日志更改不匹配(請參閱錯誤日志) SUSPEND_FROM_XRF_UPDATE = 找不到公共日志點(請參閱錯誤日志) |
recovery_lsn |
numeric(25,0) |
在主副本上,在恢復或故障轉移之后、在主數據庫寫入任何新日志記錄之前事務日志的結尾。對于給定的輔助數據庫,如果該值小于當前硬化的LSN (last_hardened_lsn),則recovery_lsn是此輔助數據庫需要重新同步的值(即要恢復到和重新初始化的值)。如果該值大于或等于當前硬化LSN,重新同步將沒有必要且不會發生。 recovery_lsn 反映了用零填充的日志塊ID。它不是實際的日志序列號(LSN)。有關如何派生此值的信息,請參閱 了解LSN列值,本主題中更高版本。 |
truncation_lsn |
numeric(25,0) |
在主副本上,對于主數據庫,反映了所有相應輔助數據庫中的最小日志截斷LSN。如果阻止本地日志截斷(例如由備份操作阻止),則該LSN可能高于本地截斷LSN。 對于給定的輔助數據庫,反映了該數據庫的截斷點。 truncation_lsn 反映了用零填充的日志塊ID。它不是實際的日志序列號。 |
last_sent_lsn |
numeric(25,0) |
指示一個點(在該點前的所有日志塊都已由主數據庫發送)的日志塊標識符。該標識符是將發送的下一日志塊的ID,而非最近發送的日志塊的ID。 last_sent_lsn 反映了日志塊ID用零填充,它不是實際的日志序列號。 |
last_sent_time |
datetime |
發送最后一個日志塊的時間。 |
last_received_lsn |
numeric(25,0) |
標識一個點的日志塊ID,在該點之前,所有日志塊都已由承載此輔助數據庫的輔助副本接收。 last_received_lsn 反映了用零填充的日志塊ID。它不是實際的日志序列號。 |
last_received_time |
datetime |
在輔助副本上讀取最后接收的消息中的日志塊ID的時間。 |
last_hardened_lsn |
numeric(25,0) |
包含輔助數據庫上最后強制寫入的LSN的日志記錄的日志塊開頭。 在異步提交主數據庫上或其當前策略為“延遲”的同步提交數據庫上,該值為NULL。對于其他同步提交主數據庫, last_hardened_lsn指示所有輔助數據庫中的強制的LSN的最小值。 注意:last_hardened_lsn 反映了用零填充的日志塊 ID。它不是實際的日志序列號。有關詳細信息,請參閱 了解LSN列值,本主題中更高版本。 |
last_hardened_time |
datetime |
輔助數據庫上最后一個日志塊標識符的時間強制寫入的LSN( last_hardened_lsn)。在主數據庫上,反映了與最小強制寫入的LSN相對應的時間。 |
last_redone_lsn |
numeric(25,0) |
在輔助數據庫上重做的上一個日志記錄的實際日志序列號。 last_redone_lsn是始終小于 last_hardened_lsn。 |
last_redone_time |
datetime |
在輔助數據庫上重做最后一個日志記錄的時間。 |
log_send_queue_size |
bigint |
主數據庫中尚未發送到輔助數據庫的日志記錄量(KB)。 |
log_send_rate |
bigint |
在最后一個活動期間,以千字節(KB)的平均主副本發送實例數據的速率/秒。 |
redo_queue_size |
bigint |
輔助副本的日志文件中尚未重做的日志記錄量(KB)。 |
redo_rate |
bigint |
日志記錄在給定輔助數據庫重做的速率(KB/s)。 |
filestream_send_rate |
bigint |
FILESTREAM 文件傳送到輔助副本的速率(KB/秒)。 |
end_of_log_lsn |
numeric(25,0) |
日志LSN的本地結尾。與主數據庫和輔助數據庫上日志緩存中的最后一個日志記錄相對應的實際LSN。在主副本上,輔助行反映了輔助副本已發送到主副本的最新進度消息中日志LSN的結尾。 end_of_log_lsn 反映了用零填充的日志塊ID。它不是實際的日志序列號。有關詳細信息,請參閱 了解LSN列值,本主題中更高版本。 |
last_commit_lsn |
Numeric(25,0) |
與事務日志中的最后提交的記錄相對應的實際日志序列號。 主數據庫上,這對應于上次處理的提交記錄。輔助數據庫的行顯示輔助副本已發送到主副本的日志序列號。 在輔助副本上,這是已重做的最后一個提交記錄。 |
last_commit_time |
datetime |
與最后一個提交記錄對應的時間。 在輔助數據庫上,此時間與主數據庫上的時間相同。 在主副本上,每個輔助數據庫行都顯示承載該輔助數據庫的輔助副本報告回主副本的時間。主數據庫行和給定的輔助數據庫行之間的時間差異表示大約恢復點目標(RPO),假定,重做進程并且進度已到主副本返回報告由輔助副本。 |
low_water_mark_for_ghosts |
bigint |
針對數據庫的單調遞增的數字,指示主數據庫上虛影清除使用的低水印。如果這個數字沒有隨著時間的推移而增加,則意味著虛影清除可能未發生。為了確定要清除的虛影行,主副本會在所有可用性副本(包括主副本)上將該列的最小值用于此數據庫。 |
secondary_lag_seconds |
bigint |
在同步期間,輔助副本是主副本的秒數。 適用范圍:SQL Server 2016(13.x)到SQL Server 2017。 |
了解LSN列值
end_of_log_lsn , last_hardened_lsn , last_received_lsn , last_sent_lsn , recovery _lsn ,并 truncation_lsn 列的值不是實際的日志序列號(Lsn)。上述各值反映了用零填充的日志塊ID。
end_of_log_lsn , last_hardened_lsn ,和 recovery_lsn 是刷新Lsn。例如, last_hardened_lsn 指示越過已位于磁盤的塊的下一個塊的開頭。因此任何LSN<的值 last_hardened_lsn 磁盤上。LSN,它是>=此值將不會刷新。
返回的LSN值 Sys.dm_hadr_database_replica_states ,則只 last_redone_lsn 是真實的LSN。
當前實例下所有可用性數據庫的狀態信息表
synchronization_state 和synchronization_state_desc
值 |
說明 |
0 |
NOT SYNCHRONIZING 未同步。 l 對于某一主數據庫,指示該數據庫未做好將其事務日志與相應的輔助數據庫同步的準備。 l 對于輔助數據庫,指示數據庫由于連接問題而未開始日志同步,正被掛起,或者在啟動或角色切換過程中正在轉換狀態。 |
1 |
SYNCHRONIZING 正在同步。 l 對于主數據庫,指示此數據庫已做好接受來自輔助數據庫的掃描請求的準備。 l 對于輔助數據庫,指示對于該數據庫正在發生活動數據移動。 |
2 |
已同步。 l 主數據庫顯示SYNCHRONIZED來代替SYNCHRONIZING。 l 同步提交輔助數據庫在以下情況下將顯示已同步:本地緩存指示數據庫副本可供故障轉移并且數據庫正在同步。 |
3 |
REVERTING 正在恢復。指示撤消進程中輔助數據庫主動從主數據庫獲取頁時的階段。 注意 :當輔助副本上的數據庫處于REVERTING狀態時,強制故障轉移到輔助副本將使數據庫處于該數據庫不能作為主數據庫啟動的狀態。該數據庫將需要作為輔助數據庫重新連接,或者您需要應用來自日志備份的新日志記錄。 |
4 |
INITIALIZING 正在初始化。指示在正在輔助副本上傳送和強制寫入輔助數據庫跟上撤消LSN所需的事務日志時的撤消階段。 注意 :當輔助副本上的數據庫處于INITIALIZING狀態時,強制故障轉移到輔助副本將使數據庫處于該數據庫可作為主數據庫啟動的狀態。該數據庫將需要作為輔助數據庫重新連接,或者您需要應用來自日志備份的新日志記錄。 |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。