我有一个启用了CDC的数据库。我们以一个简单的客户表为例。
dbo.Customer
您在此表上启用cdc并获取:
cdc.Customer_CT
SQL Server代理将运行捕获和清理作业,您可以设置参数。
sys.sp_cdc_cleanup_change_table
[ @capture_instance = ] 'capture_instance',
[ @low_water_mark = ] low_water_mark ,
[ @threshold = ]'delete threshold'
但是我只想在_CT中保留少量数据,并将其余数据移到一个不太频繁访问的历史表中。
这意味着我们还需要:
cdc.Customer_CT_History
我很好奇如何配置CDC清理作业以从 cdc.Customer_CT 中删除记录并将其插入 cdc.Customer_CT_History。
我知道这可能不是存储历史数据的最佳方法,但您可以尝试解决我的问题以及如何实现这一目标。谢谢!
答案 0 :(得分:0)
简而言之,没有。
CDC最初被设想为通过注意给定表上的变化来促进ETL的手段。也就是说,没有任何东西可以阻止你自己用ETL处理CDC数据,并且或多或少地将它处理成你自己设计的表格。答案 1 :(得分:0)
处理数据时,请确保使用__ $ update_mask列进行寻址和使用,因为这将准确提供已更改的列,以节省您在所有列之间进行比较。此外,您可以使用__ $ start_lsn作为捕获更改的时间戳。