如何在SSIS中动态设置执行包任务的位置

时间:2013-03-12 19:53:17

标签: configuration ssis package task execute

我正在尝试在SQL Server 2008中设置一个“主”SSIS包来运行其他“子”包。在开发'子'软件包时,我们将所有软件包放在磁盘上,以便我们可以轻松地对它们进行调试,因此我们在开发过程中使用文件连接器,可以很好地监控进度。

部署时,我们将子包部署到SQL Server上的SSIS,然后通过并更改所有执行包任务以使用位置值“SQL Server”并设置PackageName。完成后,我们部署'master'。

我想要做的是在Execute Package Task上使用Expression来设置连接属性,以便我们可以根据环境配置它。我们已经使用视图设置了SQL Server配置数据库,该视图检查查询的主机名并返回取决于查询的不同值。

1 个答案:

答案 0 :(得分:3)

你有选择。您使用表达式时处于正确的思维状态,但您也可以从使用配置中受益。

要使用表达式,您需要使用脚本任务或执行SQL任务来返回您想要处理的文件列表。

您必须将每个返回的值分配给它自己传递给表达式的变量,或者使用FOR EACH循环并遍历列表,每次都指定子包的位置。

另一种选择是使用配置。我的偏好是在SSIS中使用配置表。如果在每个环境中都有相同的包列表,则可以传入根目录并使用表达式: @ [User :: RootPackagePath] +“\ PackageName.dtsx”

或者,您可以在配置表中为每个子包创建一条记录,然后将其传递到包中。

根据评论进行编辑:

我成功地将配置包配置为通过配置更改从文件系统调用包然后SQL。

我只需要为每个传递Connection和PackageName。使用SQL,它需要来自连接管理器的名称(在我的情况下为。\ SQL2008R2)和包名称(\ Package1)。对于文件系统,PackageName被清空,连接是连接管理器中的FileConnection。

您必须将两者都放在包中,但是要在两者之间切换。

Configurations

Before execution

After configuration