若要添加并配置 CDC 源,则包必须已包含至少一个数据流任务和一个 CDC 控制任务。
有关 CDC 控制任务的详细信息,请参阅 CDC 控制任务。
有关 CDC 源的详细信息,请参阅 CDC 源。
使用 CDC 源提取更改数据
在 SQL Server Data Tools 中,打开包含所需包的 SQL Server 2012 Integration Services (SSIS) 项目。
在解决方案资源管理器中,双击该包将其打开。
单击**“数据流”选项卡,然后从“工具箱”**把 CDC 源拖动到设计图面。
双击此 CDC 源。
在**“CDC 源编辑器”对话框中的“连接管理器”页上,从列表中选择现有的 ADO.NET 连接管理器,或单击“新建”**创建新的连接。 该连接应该是与包含要读取的更改表的 SQL Server 数据库的连接。
选择要处理更改的**“CDC 表”**。
选择或键入具有要读取的 CDC 表的**“CDC 捕获实例”**的名称。
一个捕获源表可具有一个或两个捕获实例,以便通过架构更改处理表定义的无缝转换。 如果为要捕获的源表定义了一个捕获实例,则选择要在此处使用的捕获实例。 表 [schema].[table] 的默认捕获实例名称为 <schema>_<table>,但使用的实际捕获实例名称可能会不同。 读取的实际表是 CDC 表 cdc .<capture-instance>_CT。
选择可以最好地满足您的处理需要的处理模式。 可能的选项包括:
所有:返回当前 CDC 范围中的更改,但没有**“更新前”**值。
全部且具有旧值:返回当前 CDC 处理范围中的更改,包括旧值(“更新前”)。 对于每个更新操作将会有两行,一个针对更新前值,一个针对更新后值。
净值:对于当前 CDC 处理范围中修改的每个源行,仅返回一个更改行。 如果某一源行更新了多次,将生成合并的更改(例如,插入+更新作为单个更新生成,更新+删除作为单个删除生成)。 在净更改处理模式下工作时,可以拆分对删除、插入和更新输出的更改并且并行处理它们,因为单个源行出现多次。
具有更新掩码的净值:此模式类似于一般的净值模式,但它还添加了命名模式为 __$<column-name>__Changed 的布尔值列(指示当前更改行中已更改的列)。
净值且具有合并:此模式类似于一般的净值模式,但具有合并到单个合并操作中的插入和更新操作 (UPSERT)。
选择为当前 CDC 上下文维护 CDC 状态的 SSIS 字符串包变量。 有关 CDC 状态变量的详细信息,请参阅定义状态变量。
选中**“包括重新处理指示器列”**复选框可以创建称作 __$reprocessing 的特殊的输出列。 在 CDC 处理范围与初始处理范围(与初始加载期间相对应的 LSN 的范围)重叠时,或者在之前的运行存在错误后重新处理某一 CDC 处理范围时,该列具有值 true。 通过此指示器列,SSIS 开发人员可以在重新处理更改时以不同方式处理错误(例如,可忽略删除不存在的行和插入在重复键上失败之类的操作)。
有关详细信息,请参阅 CDC 源自定义属性。
若要更新外部列和输出列之间的映射,请单击**“列”,并在“外部列”**列表中选择其他列。
也可以通过删除**“输出列”**列表中的值来更新输出列的值。
若要配置错误输出,请单击**“错误输出”**。
可以单击**“预览”**,查看最多 200 行 CDC 源所提取的数据。
单击**“确定”**。