共用方式為


sys.dm_cdc_log_scan_sessions (Transact-SQL)

針對目前資料庫中的每個記錄掃描工作階段,各傳回一個資料列。最後一個傳回的資料列代表目前的工作階段。您可以使用這個檢視來傳回目前記錄掃描工作階段的相關狀態資訊,或自從上次啟動 SQL Server 執行個體以來所有工作階段的相關彙總資訊。

資料行名稱

資料類型

描述

session_id

int

工作階段的識別碼。

0 = 這個資料列中傳回的資料是自從上次啟動 SQL Server 執行個體以來所有工作階段的彙總。

start_time

datetime

工作階段開始的時間。

session_id = 0 時,就是開始收集彙總資料的時間。

end_time

datetime

工作階段結束的時間。

NULL = 工作階段使用中。

session_id = 0 時,就是上一個工作階段結束的時間。

duration

bigint

工作階段的持續時間 (以秒為單位)。

0 = 工作階段不包含異動資料擷取交易。

session_id = 0 時,就是包含異動資料擷取交易之所有工作階段的持續時間總計 (以秒為單位)。

scan_phase

nvarchar(200)

工作階段的目前階段。它有下列幾種:

階段描述
1正在讀取組態
2第一次掃描,正在建立雜湊表
3第二次掃描
4第二次掃描
5第二次掃描
6結構描述版本控制中
7最後一次掃描
8完成

session_id = 0 時,這個值一律為 "Aggregate"。

error_count

int

發生的錯誤數目。

session_id = 0 時,就是所有工作階段中的錯誤總數。

start_lsn

nvarchar(23)

工作階段的起始 LSN。

session_id = 0 時,就是上一個工作階段的起始 LSN。

current_lsn

nvarchar(23)

目前正在掃描的 LSN。

session_id = 0 時,目前的 LSN 就是 0。

end_lsn

nvarchar(23)

工作階段的結束 LSN。

NULL = 工作階段使用中。

session_id = 0 時,就是上一個工作階段的結束 LSN。

tran_count

bigint

已處理的異動資料擷取交易數目。這個計數器會在第 2 個階段中填入。

session_id = 0 時,就是所有工作階段中已處理的交易數目。

last_commit_lsn

nvarchar(23)

上一個已處理之認可記錄的 LSN。

session_id = 0 時,就是任何工作階段的上一個認可記錄 LSN。

last_commit_time

datetime

處理上一個認可記錄的時間。

session_id = 0 時,就是處理任何工作階段之上一個認可記錄的時間。

log_record_count

bigint

已掃描的記錄數目。

session_id = 0 時,就是已針對所有工作階段掃描的記錄數目。

schema_change_count

int

已偵測之資料定義語言 (DDL) 作業的數目。這個計數器會在第 6 個階段中填入。

session_id = 0 時,就是所有工作階段中已處理的 DDL 作業數目。

command_count

bigint

已處理的命令數目。

session_id = 0 時,就是所有工作階段中已處理的命令數目。

first_begin_cdc_lsn

nvarchar(23)

包含異動資料擷取交易的第一個 LSN。

session_id = 0 時,就是包含異動資料擷取交易的第一個 LSN。

last_commit_cdc_lsn

nvarchar(23)

包含異動資料擷取交易之上一個認可記錄的 LSN。

session_id = 0 時,就是任何工作階段中包含異動資料擷取交易的上一個認可記錄 LSN。

last_commit_cdc_time

datetime

處理包含異動資料擷取交易之上一個認可記錄的時間。

session_id = 0 時,就是處理任何工作階段中包含異動資料擷取交易之上一個認可記錄的時間。

latency

int

工作階段中介於 end_timelast_commit_cdc_time 之間的差異 (以秒為單位)。這個計數器會在第 7 個階段結束時填入。

session_id = 0 時,就是工作階段所記錄的上一個非零延遲值。

empty_scan_count

int

不包含任何異動資料擷取交易的連續工作階段數目。

failed_sessions_count

int

失敗的工作階段數目。

備註

每次啟動 SQL Server 執行個體時,這個動態管理檢視中的值就會重設。

權限

需要 VIEW DATABASE STATE 權限來查詢 sys.dm_cdc_log_scan_sessions 動態管理檢視。如需有關動態管理檢視權限詳細資訊,請參閱<動態管理檢視和函數 (Transact-SQL)>。

範例

下列範例會傳回最新工作階段的資訊。

USE AdventureWorks;
GO
SELECT *
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