MS SQL Server CDC清理作业到历史记录表

时间:2016-05-17 17:45:03

标签: sql sql-server cdc change-data-capture

我有一个启用了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。

我知道这可能不是存储历史数据的最佳方法,但您可以尝试解决我的问题以及如何实现这一目标。谢谢!

2 个答案:

答案 0 :(得分:0)

简而言之,没有。

CDC最初被设想为通过注意给定表上的变化来促进ETL的手段。也就是说,没有任何东西可以阻止你自己用ETL处理CDC数据,并且或多或少地将它处理成你自己设计的表格。

答案 1 :(得分:0)

处理数据时,请确保使用__ $ update_mask列进行寻址和使用,因为这将准确提供已更改的列,以节省您在所有列之间进行比较。此外,您可以使用__ $ start_lsn作为捕获更改的时间戳。