结果集为多个变量

时间:2019-02-21 15:49:29

标签: ssis

我正在运行使用多个Foreach循环容器,并希望同时运行它们。但是,我收到错误消息-

  

COM错误对象信息可用。资源:   “ ADODB.Recordset”错误代码:0x800A0BCD说明:“ BOF或   EOF为True,或者当前记录已被删除。已要求   操作需要当前记录。”

很明显,一旦一个Foreach循环过程完成,结果集就会被删除。

要解决这个问题,我假设您可以像这样将相同的数据传递给不同的变量-

variable mapping

然后在每个循环中仅更改DBList,一个Foreach循环为DBList,另一个为DBList2-

For loop results set

但是,我收到错误消息-

  

返回了无效数量的结果绑定   ResultSetType:“ ResultSetType_Rowset”。

是否不可能同时运行多个Foreach循环?

2 个答案:

答案 0 :(得分:3)

您可以同时运行foreach循环,但是必须将结果集放入多个对象类型变量中,并且还必须具有两组变量,分别用于每个foreach循环的变量映射。

示例:

enter image description here

您的数据流将包括一个源,多播和2个不同的RecordSet目标:

enter image description here

此处的示例源仅返回数字列表的1列。我们将其多次转换为2个单独的RecordSet目标,然后将其分配给自己的对象变量类型。在此示例中,我有2个变量,User :: RecordSet1和User:RecordSet2。

然后将每个foreach循环配置为这些变量中的每个变量:

enter image description here

然后,每个foreach循环都有单独的变量:

enter image description here

从那里开始,您需要确保在每个foreach循环中使用的任何代码中都使用了适当的变量集。

答案 1 :(得分:2)

创建Execute SQL Task而不是使用Data Flow,然后使用SQL查询作为源(可能是OLE DB源)。然后将其通过管道传递到Multicast,并输出到两个不同的Recordset Destinations。在Component Properties选项卡中,将VariableName设置为您的对象变量之一,然后单击Input Columns以选择要包括的列。对其他Recordset Destination执行相同的操作,这次选择第二个对象变量,然后再次选择要包括的列。然后回到您的Control Flow,并将刚刚创建的Data Flow链接到两个Foreach Loop Container

enter image description here

enter image description here