我一直无法找到有关如何使用SSIS在SQL Server 2014中使用更改数据捕获(CDC)重新加载增量数据的文档/说明。如何使用SQL Server CDC重新加载增量数据?
基本上,在给定的一天,如果你的SSIS增量处理失败,你需要重新开始。您如何再次播放最近更改的记录?
我一直无法找到有关如何使用SSIS在SQL Server 2014中使用更改数据捕获(CDC)重新加载增量数据的文档/说明。如何使用SQL Server CDC重新加载增量数据?
基本上,在给定的一天,如果你的SSIS增量处理失败,你需要重新开始。您如何再次播放最近更改的记录?
所以我弄清楚了如何在SSIS中做到这一点。
我每次在我的数据仓库中的一个表中运行我的SSIS包时,记录最小和最大LSN编号。
如果我想从CDC源重新加载一组数据到分段,在SSIS包中,我需要使用CDC控制任务并将其设置为“Mark CDC Start”,并在文本框中标记为“SQL Server LSN开始......“我把我想用的LSN值作为起点。
我还没有想出如何设置终点,但我可以进入我的登台表并删除LSN值>然后是我的终端节点的任何数据。
您只能对尚未“清理”的CDC更改执行此操作 - 仅适用于最近3天内更改的数据。
作为一个观点,我还将lsn_time_mapping表引入我的数据仓库,因为我发现这些信息历史上很有用,并且它在源数据库中每4天得到一次“清理”。
我想这取决于你对数据做什么,呃? :)但在一般情况下,您可以将其分解为三种情况:
假设您使用新的CDC SSIS 2012组件,特别是软件包开头和结尾的CDC控制任务。然后,如果软件包因为任何原因在软件包末尾运行CDC控制任务之前失败,那么这些LSN(日志序列号)将不会被标记为已处理,因此您可以在解决问题之后从顶部重新启动SSIS软件包,并它只会重新处理这些记录。你必须使用CDC控制任务来完成这项工作,或者自己跟踪LSN(在SSIS 2012之前,这是唯一的方法)。
马特·马森(高级项目经理对MSFT SQL Server团队)有一个很好的职位有一步一步的演练:CDC in SSIS for SQL Server 2012
而且,看到布拉德利沙赫特的帖子:Understanding the CDC state Value
我确实在SSIS 2012中设置了CDC控制任务,而且我大部分都在工作。我想我问的是你如何“取消”这些记录? – tember 2015-02-24 18:40:56
另外,有关CDC控制任务使用的CDC状态的细目以及如何修改CDC以重新处理CDC记录,请参阅Bradley Schacht的文章:http://www.bradleyschacht.com/understanding-the-cdc-state-值/ – 2015-02-24 18:44:03
但是ETL的第一步 - 从源头获取已更改的数据。你如何“重置”它,以便再次分析最近的变化。一旦进入暂存数据库,很容易处理。但是CDC - 黑匣子的一部分正在困扰着我。如果需要,我想重新安排相同的数据(手动很好)。 – tember 2015-02-24 18:28:01
CDC数据的任何拉动都取决于您提供的first_lsn和last_lsn。据推测,如果出现故障,您只需再次提供相同的端点。 – 2015-02-24 18:30:25
你会怎么做?我想这有两个问题:你如何读取lsn值?你如何告诉SSIS使用自定义的lsn范围? – tember 2015-02-24 18:36:09