異動數據擷取 - sys.dm_cdc_log_scan_sessions
適用於:SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體
針對目前資料庫中的每個記錄掃描會話,各傳回一個數據列。 傳回的最後一個數據列代表目前的會話。 您可以使用此檢視傳回目前記錄掃描會話的狀態資訊,或自上次啟動 SQL Server 實例之後,所有會話的匯總資訊。
每當 SQL Server 實例重新啟動或故障轉移發生之後,就會重設 中的 sys.dm_cdc_log_scan_sessions
記錄。 此外,如果查詢的資料庫是 Always On 可用性群組的次要角色,則不會傳回任何記錄。
如需詳細資訊,請檢閱 什麼是異動數據擷取 (CDC)?
資料行名稱 | 資料類型 | 描述 |
---|---|---|
session_id |
int | 工作階段的識別碼。 0 = 此資料列中傳回的數據是自上次啟動 SQL Server 實例以來所有會話的匯總。 |
start_time | datetime | 會話開始的時間。 當 = 0 時 session_id ,匯總數據收集的時間開始。 |
end_time | datetime | 會話結束的時間。 NULL = 工作階段為作用中。 當 = 0 時 session_id ,最後一個會話結束的時間。 |
duration | int | 會話的持續時間(以秒為單位)。 0 = 會話不包含異動數據擷取交易。 當 = 0 時 session_id ,具有異動數據擷取交易之所有會話的持續時間總和(以秒為單位)。 |
scan_phase | nvarchar(200) | 會話的目前階段。 以下是可能的值及其描述: 1:讀取設定 2:第一次掃描,建置哈希表 3:第二次掃描 4:第二次掃描 5:第二次掃描 6:架構版本控制 7:上次掃描 8:完成 當 = 0 時 session_id ,此值一律為 “Aggregate”。 |
error_count | int | 遇到的錯誤數目。 當 = 0 時 session_id ,所有工作階段中的錯誤總數。 |
start_lsn | nvarchar(23) | 啟動工作階段的 LSN。 當 = 0 時 session_id ,最後一個會話的起始 LSN。 |
current_lsn | nvarchar(23) | 正在掃描目前的 LSN。 當 = 0 時 session_id ,目前的 LSN 為 0。 |
end_lsn | nvarchar(23) | 結束會話的 LSN。 NULL = 工作階段為作用中。 當 = 0 時 session_id ,最後一個會話的結束 LSN。 |
tran_count | bigint | 已處理的異動數據擷取交易數目。 此計數器會在階段 2 中填入。 當 = 0 時 session_id ,所有工作階段中已處理的交易數目。 |
last_commit_lsn | nvarchar(23) | 上次處理之認可記錄檔記錄的 LSN。 當 = 0 時 session_id ,任何會話的最後一個認可記錄檔記錄 LSN。 |
last_commit_time | datetime | 處理最後一個認可記錄檔記錄的時間。 當 = 0 時 session_id ,任何會話的最後一個認可記錄檔記錄的時間。 |
log_record_count | bigint | 掃描的記錄檔記錄數目。 當 session_id = 0 時,會掃描所有會話的記錄數目。 |
schema_change_count | int | 偵測到的數據定義語言 (DDL) 作業數目。 此計數器會在階段 6 中填入。 當 = 0 時 session_id ,所有會話中處理的 DDL 作業數目。 |
command_count | bigint | 已處理的命令數目。 當 = 0 時 session_id ,所有工作階段中處理的命令數目。 |
first_begin_cdc_lsn | nvarchar(23) | 包含異動數據擷取交易的第一個 LSN。 當 = 0 時 session_id ,包含異動數據擷取交易的第一個 LSN。 |
last_commit_cdc_lsn | nvarchar(23) | 包含異動數據擷取交易之最後一個認可記錄檔記錄的 LSN。 當 = 0 時 session_id ,包含異動數據擷取交易之任何會話的最後一個認可記錄 LSN |
last_commit_cdc_time | datetime | 處理最後一個認可記錄檔記錄的時間,其中包含異動數據擷取交易。 當 = 0 時 session_id ,包含異動數據擷取交易之任何會話的最後一個認可記錄檔記錄的時間。 |
延遲 | int | 會話中的 和 last_commit_cdc_time 之間的end_time 差異,以秒為單位。 此計數器會在階段 7 結束時填入。當 = 0 時 session_id ,會話所記錄的最後一個非零延遲值。 |
empty_scan_count | int | 包含無異動數據擷取交易的連續會話數目。 |
failed_sessions_count | int | 失敗的會話數目。 |
備註
sys.dm_cdc_log_scan_sessions
DMV 包含最多 32 個掃描會話,以及所有session_id= 0
掃描會話的匯總。 因此,在任何指定時間,此動態管理檢視最多可以包含 33 個數據列。
權限
需要 VIEW DATABASE STATE 許可權才能查詢 sys.dm_cdc_log_scan_sessions
動態管理檢視。 如需動態管理檢視許可權的詳細資訊,請參閱動態管理檢視和函式 (Transact-SQL)。
SQL Server 2022 和更新版本的權限
需要資料庫上的 VIEW DATABASE PERFORMANCE STATE 權限。
範例
下列範例會傳回目前會話的資訊。
USE AdventureWorks2022;
GO
SELECT session_id, start_time, end_time, duration, scan_phase,
error_count, start_lsn, current_lsn, end_lsn, tran_count,
last_commit_lsn, last_commit_time, log_record_count, schema_change_count,
command_count, first_begin_cdc_lsn, last_commit_cdc_lsn,
last_commit_cdc_time, latency, empty_scan_count, failed_sessions_count
FROM sys.dm_cdc_log_scan_sessions
WHERE session_id = (SELECT MAX(b.session_id) FROM sys.dm_cdc_log_scan_sessions AS b);
GO