CDC LSN:查询 return 个不同的最小值

CDC LSNs: queries return different minimum value

我在 table 上启用了 CDC,我正在尝试获取该 table 的最小 LSN 以用于 ETL 作业。但是当我 运行 这个查询

select sys.fn_cdc_get_min_lsn('dbo_Table')

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

select min(__$start_lsn) from cdc.dbo_Table_CT

这些查询不应该 return 相同的值吗?如果他们不这样做,为什么不呢?以及如何让它们恢复同步?

第一个查询:

select sys.fn_cdc_get_min_lsn('dbo_Table')

调用系统函数,returns 捕获实例的最低可能 lsn。该值在清理函数运行时设置。它记录在 cdc.change_tables 中,并从中查询。

第二个查询:

select min(__$start_lsn) from cdc.dbo_Table_CT

查看实际捕获实例和 returns 实例的最低实际 lsn。在清理函数运行后记录对实例的第一个实际更改时设置此值。它记录在 cdc.dbo_Table_CT 中,并从中查询。

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