CDC LSN:查询返回不同的最低值



我在表上启用了CDC,我正在尝试获取该表中的最小LSN,以便在ETL作业中使用。但是,当我运行此查询

select sys.fn_cdc_get_min_lsn('dbo_Table')

我得到了此查询的不同结果

select min(__$start_lsn) from cdc.dbo_Table_CT

这些查询不应该返回相同的值吗?如果他们不为什么不呢?以及如何使他们同步?

第一个查询:

select sys.fn_cdc_get_min_lsn('dbo_Table')

调用一个系统函数,该功能返回捕获实例的最低LSN。当清理功能运行时,设置此值。它被记录在CDC.CHANGE_TABLE中并从查询中。

第二个查询:

select min(__$start_lsn) from cdc.dbo_Table_CT

查看实际捕获实例,并返回该实例的最低实际LSN。当清除功能运行后,对实例的第一个实际更改将记录在实例时,则设置此值。它记录在CDC.DBO_TABLE_CT中并从查询中。

从统计上讲,它们不太可能捆绑。出于ETL作业的目的,使用对系统表的调用可能会更快,并且更准确地反映了当前的变更记录开始累积的何时。

最新更新