繁体   English   中英

如何存储更改数据(CDC)SQL Server 2012

[英]How to store change data (CDC) SQL Server 2012

我已经详细阅读了几次,现在在SQL Server 2012中设置CDC功能 但是有一个非常混乱的图形

魔术数据仓库

这似乎表明您的CDC数据可以存储在另一个数据库(数据仓库)中。 但是,这并不是我真正考虑的“存储”内容。

按照说明设置“ 数据收集 ”单元时,没有ETL功能。 我对数据收集的理解是为了随着时间的推移监视数据库活动,而不是回头查看特定行集的更改。

因此,我必须缺少一些基本逻辑。 是否有某种魔术CDC功能本身可以批量插入或从cdc changetable中移动数据(默认情况下仅保留3天),还是我需要为CDC设置的每个表编写自定义SSIS / ETL作业? 我可以写SSIS工作,但是看来这很可能不是正确的方法。 如果有人能指出我有关在另一个数据库或实例上存储cdc数据的教程,我将不胜感激。 我的搜索只是使我一直指向数据收集或cdc,而这些都没有真正存储100%的更改历史记录。

感谢您的编辑请求。 我以为这令人困惑:

我的要求如下:

  1. 捕获特定表集上的所有更改(CDC进行救援,并且它起作用)

  2. 将更改数据存储在其他关系数据库中7年。 即。 能够返回到特定记录并在任何时间段内对其进行所有更改。 (这是使我对MSDN图形和表面解决方案感到困惑的部分)。

  3. 数据ETL作业应尽可能实时(而不是分批或按计划)完成

作为一项技术,CDC主要用于促进使辅助数据存储(例如,数据仓库)保持最新状态,以适应主数据库上发生的更改。 就是说,没有什么可以说您无法使用CDC做您想做的事情。 本质上,您将在要跟踪其更改的表上设置CDC并调用cdc.fn_cdc_get_all_changes...cdc.fn_cdc_get_net_changes... (以适合您的情况为准,尽管我猜所有定期根据您的描述进行更改)以获取这些表的更改,届时您将把原始的cdc数据存储到指定用于保存它的另一个表中。

但是请注意,保留要求很严格。 例如,您不能只在保留期结束后删除记录,因为只要记录仍处于活动状态,就需要不间断的更改链回到记录的原始插入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM