2015-02-23 17 views
0

我在SQL 2014数据库上使用更改数据捕获(CDC),以仅将新/更改/删除的记录带到数据仓库。在SSIS中使用CDC来恢复关联的记录

作为我的ETL的一部分,我正在展开两个表 - 订单和订单详细信息。因此,在DW中,它是OrderTrans,每个Trans等同于每个Trans中重复的Order Order标题信息的Order Detail。相当标准。

我在源数据库的两个表上使用CDC - 源订单表和源订单详细信息表。所以我有两个登台表 - 它们被合并到一个事实表中。

我的问题是,如果订单明细被更改 - 相应的订单记录不会发生变化。这是有道理的。但我正在寻找一种方式在SSIS中为所有修改的订单明细分阶段的所有订单记录。我知道我将不得不手动将其作为SSIS中的一个步骤来执行 - 但是我对如何实施它感到不知所措......?我的暂存表和源表位于两个不同的服务器上 - 所以我无法写入一个将我的CDC阶段订单详细信息添加到源数据库中相应(未更改)订单的SQL陈述。

有什么建议吗?

回答

0

我想出了一种方法来做我所需要的。我想引入与更改的任何细节相关的订单。因此,我增加了一步订单详细信息被加载后,以此为数据源:

SELECT distinct o.* 
from [orders] o 
inner join [cdc].[inventory_order_detail_CT] as od_cdc 
on o.order_id = od_cdc.order_id 
where o.order_id not in (select order_id from [cdc].[inventory_orders_CT]) 

的_CT表是用来通过SQL来管理CDC

系统表