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) |
工作階段的目前階段。 它有下列幾種:
當 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_time 與 last_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 AdventureWorks2012;
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