Sql SSIS多播-按特定顺序执行

Sql SSIS多播-按特定顺序执行,sql,sql-server,ssis,multicast,Sql,Sql Server,Ssis,Multicast,我有一个SSIS多播对象,它将我的流分成两条路径 第一个路径:我需要更新一行; 第二条路径:我需要插入一行 基本上,我在SSIS中实现SCD TYPE2数据,而不使用SCD向导。因此,在我识别了源数据中已更改的记录之后,我需要“第一条路径”使该记录过期,而“第二条路径”将已更改的记录插入目标表中 我需要一种方法使第二条路径等待,直到第一条路径完成。(否则,第1条路径也将通过第2条路径更新新插入的行) 非常感谢您的帮助。多播是并行操作,因此您不能让一条路径等待另一条路径 因此,您需要做的是,将数据

我有一个SSIS多播对象,它将我的流分成两条路径

第一个路径:我需要更新一行; 第二条路径:我需要插入一行

基本上,我在SSIS中实现SCD TYPE2数据,而不使用SCD向导。因此,在我识别了源数据中已更改的记录之后,我需要“第一条路径”使该记录过期,而“第二条路径”将已更改的记录插入目标表中

我需要一种方法使第二条路径等待,直到第一条路径完成。(否则,第1条路径也将通过第2条路径更新新插入的行)


非常感谢您的帮助。

多播是并行操作,因此您不能让一条路径等待另一条路径

因此,您需要做的是,将数据临时存储在内存中,稍后再对其进行处理以插入目标(对于SCD类型2)

对于临时存储数据,您有一些选项:

  • 临时表(使用RetainSameConnection=true),以便维护会话上下文。可以从临时表加载到最终表
  • 记录集目标(它位于内存对象中)。从记录集目标,您可以在数据流任务或脚本任务中加载到最终表
  • 原始文件目的地(它以本机格式存储数据,并且易于重用)

多播是并行操作,因此不能让一条路径等待另一条路径

因此,您需要做的是,将数据临时存储在内存中,稍后再对其进行处理以插入目标(对于SCD类型2)

对于临时存储数据,您有一些选项:

  • 临时表(使用RetainSameConnection=true),以便维护会话上下文。可以从临时表加载到最终表
  • 记录集目标(它位于内存对象中)。从记录集目标,您可以在数据流任务或脚本任务中加载到最终表
  • 原始文件目的地(它以本机格式存储数据,并且易于重用)

您是否尝试过使用“条件拆分”组件?老实说,让您自己的生活更轻松-将更新转移到持久性物理表,然后在数据流之后触发执行SQL任务。Meagan在这方面写得很好,你不必做Biml,但她的照片应该足以说明问题。哈希历史键和更改键的逻辑是值得重视的。您是否尝试过使用“条件拆分”组件?老实说,让您自己的生活更轻松-将更新转移到持久性物理表,然后在数据流之后启动执行SQL任务。Meagan在这方面写得很好,你不必做Biml,但她的照片应该足以说明问题。散列历史键和更改键的逻辑是值得的。