我正在使用ssis作业根据系统创建的cdc表(带后缀_CT)中的lsn值从源到目标获取CDC数据。
当我启用CDC时,基表已有很多行。
现在,在第一次ssis运行中,我需要在开始执行DML操作之前基于lsn提取所有现有数据,但所有cdc表都是空的。
所以问题是如果我们在非空表上启用cdc,在我们开始更改数据之前它不会在cdc系统表中有cdc数据吗?
答案 0 :(得分:0)
简短的回答是:否 - CDC表将没有初始数据的副本。通过从事务日志中读取更改(插入,更新,删除)并将它们插入CDC表来填充CDC表。
我会使用数据快照或备份来初始化您的数据。具体做法是:
DBCC DBINFO(DATABASENAME) WITH TABLERESULTS;
(所有信用额度为this link)cdc.fn_cdc_get_all_changes_<capture_instance>()
或cdc.fn_cdc_get_net_changes_<capture_instance>()
函数。这将为您提供从用于执行初始加载的备份或快照所代表的时间点发生的更改。