如何更改 CDC 的保留期或为其设置条件(SQL Server 2012)
How to change the retention period for CDC or put a condition on it (SQL Server 2012)
我在 SQL Server 2012 环境中,并且在 table 上启用了 CDC。总而言之,table 用于填充数据仓库(基本上,table 的内容在其他地方是重复的)。
但是,我刚刚注意到我们正在丢失大量数据,因为 CDC 启用了默认设置 3 天。 我知道如何编写查询以启用具有 NEW/DIFFERENT 保留期的 CDC。但这不是任务,任务是我必须能够更改当前的 CDC 设置。那么,有没有办法 ALTER 保留期?
另外,另外,总而言之,有什么办法可以防止CDC删除过期的记录吗?意思是,有没有办法实现一个标志,防止 CDC 删除任何记录,除非该记录已经 transferred/moved。
非常感谢!
sys.sp_cdc_change_job 是您要更改保留的内容。
关于你的第二个问题,CDC 无法知道你处理了哪些行,哪些行没有处理。因此,您必须设置保留期限,以便有足够的时间来处理自 ETL 作业上次 运行 以来积累的记录。使用 CDC 的典型工作流定期运行(例如每天、每周)。所以当你说你正在丢失数据时,我闻到了一些奇怪的味道(除非当前保留期设置为低于 ETL 运行之间的时间)。
具体可以使用如下命令(根据上面的回答):
EXECUTE sys.sp_cdc_change_job
N'cleanup',
@retention = RetentionTimeInMin --this is a number in minutes
我在 SQL Server 2012 环境中,并且在 table 上启用了 CDC。总而言之,table 用于填充数据仓库(基本上,table 的内容在其他地方是重复的)。
但是,我刚刚注意到我们正在丢失大量数据,因为 CDC 启用了默认设置 3 天。 我知道如何编写查询以启用具有 NEW/DIFFERENT 保留期的 CDC。但这不是任务,任务是我必须能够更改当前的 CDC 设置。那么,有没有办法 ALTER 保留期?
另外,另外,总而言之,有什么办法可以防止CDC删除过期的记录吗?意思是,有没有办法实现一个标志,防止 CDC 删除任何记录,除非该记录已经 transferred/moved。
非常感谢!
sys.sp_cdc_change_job 是您要更改保留的内容。
关于你的第二个问题,CDC 无法知道你处理了哪些行,哪些行没有处理。因此,您必须设置保留期限,以便有足够的时间来处理自 ETL 作业上次 运行 以来积累的记录。使用 CDC 的典型工作流定期运行(例如每天、每周)。所以当你说你正在丢失数据时,我闻到了一些奇怪的味道(除非当前保留期设置为低于 ETL 运行之间的时间)。
具体可以使用如下命令(根据上面的回答):
EXECUTE sys.sp_cdc_change_job
N'cleanup',
@retention = RetentionTimeInMin --this is a number in minutes