【问题标题】:How to update the origin table in the CDC workflow (via SSIS)?如何更新 CDC 工作流中的源表(通过 SSIS)?
【发布时间】:2015-05-05 12:06:04
【问题描述】:

我有一个 CDC 流程设置,其中 TableA 的附加行(或更新)由 ETL 自动拾取并放入 TableB 中

表A >>CDC>>表B

CDC 工作正常,除了我想在 CDC 进程完成后更新第一个表。我想通过填充它来更新表 “提取日期”。所以我的表 A 有,可以说:姓名、年龄、OtherInfo、ExtractionDate。 CDC 设置在 Name、Age 和 OtherInfo 列上(extractionDate 列被排除在外)。 然后,一旦对 TableA 执行 CDC 并将其带到 TableB,我想用当前日期填充 TableA 的“extractionDate”。但是,鉴于我不知道正在移动哪些行,我很难填充该列。具体来说,当只有 SSIS 知道时,如何创建“选择性”where 子句来选择“更改”行。

【问题讨论】:

    标签: sql-server ssis ssis-2012 cdc change-data-capture


    【解决方案1】:

    在表 A 数据库中,有一些系统表是作为启用 CDC 的一部分而创建的。您应该能够轻松找到与表 A 关联的表。这是 MSSQL 跟踪所有更改的地方。

    __$start_lsn 是更改发生时间的时间戳,您的 SSIS 导入使用此值来进行一系列更改。 lsn_time_mapping 可让您查找时间戳,以便更容易理解。

    在我的处理过程中,我存储了开始和结束 lsn 值,因此我知道每次 SSIS 运行都会带来什么。然后我可以使用这些 lsn 值返回到这个 CDC 源表并查看 MSSQL 在该时间跨度内跟踪的所有更改。

    请记住,CDC 系统表每隔几天就会自动清理一次 - 因此您无法在历史上应用此逻辑 - 仅适用于最近的导入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-27
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      相关资源
      最近更新 更多