我想使用SQL Server更改数据捕获实现增量加载过程。我找到的每一个例子都是"快乐之路"。
换句话说,他们假设CDC历史超过了上一次成功的增量负载之后的时间。
假设我们将清理作业的默认时间设置为3天,并且由于某种原因,加载没有成功完成的时间超过了3天。我需要检查这个并运行一个完整的提取。
我正在记录SQL Server表中成功执行的日期时间。那么,如果我将最后一个成功的日期与cdc.lsn_time_mapping
表中最早的记录进行比较,这将完成我的任务吗?
基本上是这样的:
Select @LastSuccessfulDate from audit....
Select @MinCdCDate = min(tran_begin_time) from cdc.lsn_time_mapping
if @MinCdCDate > @LastSuccessfulDate then 'Full' else 'Incremental'
这应该工作吗?有没有更好的方法来完成它?
我会一直呆在"日志域";而不是"时域"直接与疾病控制中心合作时因此,跟踪上一次运行的最后一个LSN,并将其与sys进行比较。Fn_cdc_get_min_lsn .
如果最后一次同步是在lsn=100,而min_lsn=110,那么就会有10条日志记录丢失。
但是这只是需要您使用完全同步重新初始化复制的许多场景之一,因此您还应该有一个输入参数或其他类似的东西来强制完全同步。