(点击查看大图)图5-26 OLE DB Command编辑器的Column Mappings选项卡 SQL语句中的两个问号映射到DELETE输出中的EmployeeKey和TimeKey。 说明:
用OLE DB Command转换执行更新或删除,同时在相同数据流的相同表作插入,可能导致锁定问题。要确保在使用的数据流目标中关闭表锁定。如果仍有锁定问题,那需 要关闭快速加载,在这种情况下,对OLE DB Command操作使用基于集合的方法可能更好(如下面将演示的更新输出那样)。
最后的Condition Split输出要求在事实表中更新行。更新在这一场景中更为常见,因此不要使用OLE DB Command转换,而是通过另一个名为Update Sales Quotas的OLE DB Destination适配器将行分段到一个名为stgFactSalesQuota_Updates的表中。
需要额外两个控制流步骤来完成基于集合的更新。图5-27显示了完整的控制流任务。 在数据流前运行的第一个Execute SQL Task用TRUNCATE TABLE语句清除了中间表中的行。行通常保存在中间表中,直到下一ETL运行,允许审核和故障检修。这就是TRUNCATE语句在数据流之前而不是在UPDATE语句之后发生的原因。
相关推荐: