从SSIS中的父包在ForEach循环内并行执行相同的子包
Executing same child package parallely inside ForEach Loop from parent package in SSIS
我的父包是这样设计的
第 1 步:数据流任务从数据库中获取配置列表并存储在记录集中。
第 2 步:对于每个调用子包的循环,其项目参数设置为上一个任务的值。
现在的场景:如果我从第 1 步获得 2 条记录,那么第 2 步将依次执行 2 次。如何为从步骤 1 中获取的 2 个配置并行执行步骤 2。
在谷歌搜索了一段时间后,我为每个循环在内部复制了 child execute package task 2 次,但是从上一个任务到 child package 参数的值分配没有正确映射。请告知我做错了什么
注意:我正在寻找执行包任务的解决方法,该任务将父包的每个循环中的子包副本异步调用到 运行。子包是通用的,需要参数绑定,其中父包的变量值分配给子包参数values.So,子包的每个副本应该能够从列表中获取不同的变量值并进行参数绑定。如果可能,请告诉我。
Execute package task parameter bindings
在您的 foreach 循环中添加一个执行 SQL 并添加此代码并填写正确的信息和参数...
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'Package1.dtsx'
, @project_name=N'Project1'
, @folder_name=N'Folder1'
, @use32bitruntime=False
, @reference_id=NULL
, @execution_id=@execution_id OUTPUT
-- Execute the package
EXEC [SSISDB].[catalog].[start_execution] @execution_id
这将启动程序包,无需等待。
如果您要设置包参数,请为每个参数添加(在创建和启动之间):
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id
, @object_type = 30 -- package parameter
, @parameter_name = N'ParameterName'
, @parameter_value = 1
我的父包是这样设计的 第 1 步:数据流任务从数据库中获取配置列表并存储在记录集中。 第 2 步:对于每个调用子包的循环,其项目参数设置为上一个任务的值。
现在的场景:如果我从第 1 步获得 2 条记录,那么第 2 步将依次执行 2 次。如何为从步骤 1 中获取的 2 个配置并行执行步骤 2。
在谷歌搜索了一段时间后,我为每个循环在内部复制了 child execute package task 2 次,但是从上一个任务到 child package 参数的值分配没有正确映射。请告知我做错了什么
注意:我正在寻找执行包任务的解决方法,该任务将父包的每个循环中的子包副本异步调用到 运行。子包是通用的,需要参数绑定,其中父包的变量值分配给子包参数values.So,子包的每个副本应该能够从列表中获取不同的变量值并进行参数绑定。如果可能,请告诉我。 Execute package task parameter bindings
在您的 foreach 循环中添加一个执行 SQL 并添加此代码并填写正确的信息和参数...
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'Package1.dtsx'
, @project_name=N'Project1'
, @folder_name=N'Folder1'
, @use32bitruntime=False
, @reference_id=NULL
, @execution_id=@execution_id OUTPUT
-- Execute the package
EXEC [SSISDB].[catalog].[start_execution] @execution_id
这将启动程序包,无需等待。
如果您要设置包参数,请为每个参数添加(在创建和启动之间):
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id
, @object_type = 30 -- package parameter
, @parameter_name = N'ParameterName'
, @parameter_value = 1