SSIS 2012通过项目部署模型将子包中的值传递给父包

标签 ssis

我正在使用新的项目部署模型。

我有一个称为ETL的主程序包。我的ETL软件包所做的第一件事是运行一个名为get SFTP files的软件包,如图所示。

在获取SFTP文件中,一个foreach循环获取ClientID。我如何将此值传递回父包ETL ???做插入等

最佳答案

这是一种将值从子包变量传递到父包变量的方法。

脚本任务:(在子程序包中)

// Populate collection of variables.
// This will include parent package variables.
Variables vars = null;
Dts.VariableDispenser.GetVariables(ref vars);

// Lock the to and from variables. 
Dts.VariableDispenser.LockForWrite("User::MyParentPackageVar");
Dts.VariableDispenser.LockForRead("User::MyChildPackageVar");

// Apparently need to call GetVariables again after locking them.
// Not sure why - perhaps to get a clean post-lock set of values.
Dts.VariableDispenser.GetVariables(ref vars);
vars["User::MyParentPackageVar"].Value = vars["User::MyChildPackageVar"].Value;

vars.Unlock();

该代码实际上来自2012年之前的SSIS程序包,我刚刚完成了对SQL Server 2012的SSIS升级(在Visual Studio 2012中),并转换为项目部署模型。

最初,执行在变量分配行上终止(经过长时间的延迟)。但是,然后我添加了“User::”前缀,这显然是至少一个但不是我通过这种方式分配的所有变量所必需的。在SQL Server 2008的SSIS中,前缀不是必需的。

关于SSIS 2012通过项目部署模型将子包中的值传递给父包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288766/

相关文章:

sql - 使用 XMLTYPE 输出执行 Oracle 存储过程并将其捕获到 SSIS 变量中

date - 带有日期变量的 SSIS For 循环容器

sql-server - 使用 SSIS 将巨大的 excel (xlsx) 导入到 SQL Server

visual-studio - SSIS 添加一个存在的包实际上添加了一个相同的副本

sql-server - 是否需要直接修改XML来为不同的环境准备一个SSIS包?

sql-server - 从文件夹中删除超过 90 天的文件的最简单方法是什么?

ssis - 如何通过SSIS刷新画面报告

SSIS如何从Paradox导入数据?

xml - 列出SSIS包中所有 "Execute SQL Task"的SqlStatementSource