CDC Control Task可以从控制CDC数据同步,比如初始化加载、LSN范围的管理。它可以代替另一种做法,就是通过调用一批CDC函数来完成同样的事情。从SSIS的角度来完成,事情编程简单,和另外两个空间配合起来(CDC Source,和CDC Splitter),仅需配置一些控件参数便可以完成整个数据抽取过程。

CDC Source从启用了CDC的数据表中查询数据

CDC Splitter和Conditional Split组件功能相似。它生成三个数据流分支:Inserts, Updates, and Deletions

加载CDC数据一般来讲需要两个包,一个做initial load,另一个做incremental load。

说到CDC Control Task,需要说明CDC Control Operation属性有4个选项:

1)Mark Initial Load Start: initial load开始时获取start LSN和更新CDC_State变量值

2)Mark Initial Load End:initial load结束时获取start LSN和更新CDC_State变量值

3)Mark CDC Start: 记录CDC范围开始值

4)Get Processing Range: 获取增量加载时的LSN范围值

5)Mark Processed Range:完成增量加载后的LSN范围值

不过经过测试,这里好像有个SSIS的Bug。在按照下面的博客的做法做之后发现运行过程报错

http://www.mattmasson.com/2011/12/cdc-in-ssis-for-sql-server-2012-2/?utm_source=rss&utm_medium=rss&utm_campaign=cdc-in-ssis-for-sql-server-2012-2

报错信息如:Error: "No CDC End (CE) in state variable User::CDC_State.

Google了一下发现很多人和我遇到同样的问题。

搞不懂为什么不行。在MSDN上找到一个相关连接,

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/f01a3b64-a0e5-4cb7-880a-e6a54c2875ae/cdc-ssis-2012-cdc-taskcdc-sourcecdc-splitter?forum=sqlintegrationservices

而即便我按里面的ANSWER去做,把CDC Control Operation设置为Get Processing Range,第一遍运行还是报错

第二遍运行才成功

这里有人report了这个问题给微软,不过问题似乎没有得到解答。

https://connect.microsoft.com/SQLServer/feedback/details/743536/cdc-source-in-ssis-not-working-with-initial-load

这里我还是觉得这个东西不太稳定,不如用CDC函数来组合编写CDC加载数据的逻辑

Data Flow ->> CDC Control Task, CDC Source, CDC Splitter的更多相关文章

  1. SSIS的 Data Flow 和 Control Flow

    Control Flow 和 Data Flow,是SSIS Design中主要用到的两个Tab,理解这两个Tab的作用,对设计更高效的package十分重要. 一,Control Flow 在Con ...

  2. SSIS Data Flow 的 Execution Tree 和 Data Pipeline

    一,Execution Tree 执行树是数据流组件(转换和适配器)基于同步关系所建立的逻辑分组,每一个分组都是一个执行树的开始和结束,也可以将执行树理解为一个缓冲区的开始和结束,即缓冲区的整个生命周 ...

  3. SSIS ->> Control Flow And Data Flow

    In the Control Flow, the task is the smallest unit of work, and a task requires completion (success, ...

  4. 微软BI 之SSIS 系列 - 理解Data Flow Task 中的同步与异步, 阻塞,半阻塞和全阻塞以及Buffer 缓存概念

    开篇介绍 在 SSIS Dataflow 数据流中的组件可以分为 Synchronous 同步和 Asynchronous 异步这两种类型. 同步与异步 Synchronous and Asynchr ...

  5. Data Flow ->> Source ->> Error Output ->> Error & Truncation: Ignore Failure, Redirect Now, Fail Component

    Ignore Failure: 当该字段遇到错误时,字段值被设为NULL Redirect Now: 把该行输出到SSIS的Source组件的红色输出线,这时红色输出线应该连接一个可以接受结果集的组件 ...

  6. Data Flow ->> Script Component

    和Control Flow中的Script Task非常类似,不同的是Script Component是Per-Row的执行类型.打个比方,在Script Component中加入两个Output的字 ...

  7. [转]Data Flow How-to Topics (SSIS)

    本文转自:http://technet.microsoft.com/en-us/library/ms137612(v=sql.90).aspx This section contains proced ...

  8. SSIS Data Flow优化

    一,数据流设计优化 数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化. 1,流,同时对数据进行提取,转换和加载操作 流,就是在source提取数据时,转换组件处理 ...

  9. Data Flow的Error Output

    一,在Data Flow Task中,对于Error Row的处理通过Error Output Tab配置的. 1,操作失败的类型:Error(Conversion) 和 Truncation. 2, ...

随机推荐

  1. Gentoo 网络接口配置文件说明

    裁剪的Gentoo系统,仅供公司内部使用! [作为备份档案] 网络接口配置:/etc/conf.d/net #设置静态IPconfig_eth0="192.168.1.x/24" ...

  2. 【Convert Sorted List to Binary Search Tree】cpp

    题目: Given a singly linked list where elements are sorted in ascending order, convert it to a height ...

  3. 《编写高质量代码:改善Java程序的151个建议》笔记

    To fight the unthinkable,you have to be willing to do the unthinkable.   不要在循环中使用try catch,应该放在循环的外面 ...

  4. shell grep 高亮

    grep "socket" a --color=auto

  5. ionic 实现双击返回键退出应用功能

    ionic 实现双击返回键退出应用功能 keywords cordova,ngcordova,phonegap,ionic,双击,返回键,退出 例子 准备Toast插件,提示用,用户体验好点,不是必须 ...

  6. C++ Templates基本知识

    一.使用Templates的原因:例如我们要写一个算法,由于类型不同,我们不得不做一下工作.1.使用宏定义代替Templates不利于类型检查. 2.将一些算法放在基类里,以后的扩展的子类都需要充基类 ...

  7. [转]后缀自动机(SAM)

    原文地址:http://blog.sina.com.cn/s/blog_8fcd775901019mi4.html 感觉自己看这个终于觉得能看懂了!也能感受到后缀自动机究竟是一种怎样进行的数据结构了. ...

  8. 剑指offer--面试题23

    //该题原本想用递归实现,但却用循环实现了... //关键用了个队列 #include <queue> void Print(BinaryTreeNode* pRoot, std::que ...

  9. FbxDataType is ambiguous

    ??? 使用fbx自定义的类型的时候,比如 FbxIntDT 会有link error 根本原因是 FbxDataType is ambiguous solution: 把fbx的lib换成 libf ...

  10. DEVICE DRAW VERTEX BUFFER TOO SMALL

    D3D11 WARNING #356 这个傻warning的意思看起来是说vertex buffer 太小了 描述是这样的: Vertex Buffer at the input vertex slo ...