0

我有一个启用了 CDC 的数据库。我们以一个简单的客户表为例。

dbo.客户

您在此表上启用 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。

我知道这可能不是存储历史数据的最佳方法,但请您尝试解决我的问题以及如何完成此操作。谢谢!

4

2 回答 2

0

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

于 2016-09-21T17:15:42.770 回答
0

简而言之,没有。

CDC 最初被认为是通过记录给定表上的更改来促进 ETL 的一种方式。也就是说,没有什么可以阻止您自己使用 ETL 处理 CDC 数据,并将其或多或少未经处理的数据推送到您自己设计的表格中。

于 2016-05-17T19:42:18.527 回答