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_time 与 last_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