1

我在 SQL Server 2012 环境中,并且在表上启用了 CDC。总而言之,该表用于填充数据仓库(基本上,该表的内容在其他地方重复)。

但是,我刚刚注意到我们丢失了大量数据,因为 CDC 启用了默认设置 3 天。我知道如何编写一个查询来启用具有NEW /DIFFERENT 保留期的 CDC。但这不是任务,任务是我必须能够更改当前的 CDC 设置。那么,有没有办法改变保留期?

另外,有没有办法防止 CDC 完全删除过期记录?意思是,有没有办法实现一个标志,防止 CDC 删除任何记录,除非该记录已经被转移/移动。

非常感谢你!

4

2 回答 2

1

sys.sp_cdc_change_job是您要更改保留的内容。

至于您的第二个问题,CDC 无法知道您处理了哪些行而不是处理了哪些行。因此,您必须设置保留期,以便您有足够的时间来处理自 ETL 作业上次运行以来积累的记录。使用 CDC 的典型工作流程定期运行(例如每天、每周)。因此,当您说您正在丢失数据时,我闻起来有些奇怪(除非当前保留期设置为低于 ETL 运行之间的时间)。

于 2015-05-04T12:45:08.000 回答
0

具体来说,可以使用以下命令(根据上面的答案):

EXECUTE sys.sp_cdc_change_job
  N'cleanup',
  @retention = RetentionTimeInMin --this is a number in minutes 
于 2015-05-04T15:09:57.560 回答