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 可能会更快,并且更准确地反映当前更改记录集何时开始累积。
我在 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 可能会更快,并且更准确地反映当前更改记录集何时开始累积。