Share via


異動資料擷取 - sys.dm_cdc_log_scan_sessions

適用於:SQL ServerAzure SQL DatabaseAzure 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_sessionsDMV 包含最多 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  

下一步