sys.dm_cdc_log_scan_sessions

针对当前数据库中的每个日志扫描会话返回一行。返回的最后一行表示当前会话。您可以使用此视图返回有关当前日志扫描会话的状态信息,或有关自 SQL Server 实例上次启动以来所有会话的聚合信息。

列名

数据类型

说明

session_id

int

会话的 ID。

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 实例,就会重置此动态管理视图中的值。

权限

若要查询 sys.dm_cdc_log_scan_sessions 动态管理视图,要求拥有 VIEW DATABASE STATE 权限。有关动态管理视图权限的详细信息,请参阅动态管理视图和函数 (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

请参阅

参考