1

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

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

我想做的是在执行包任务上使用表达式来设置连接属性,以便我们可以根据环境进行配置。我们已经使用一个视图设置了一个 SQL Server 配置数据库,该视图检查查询的主机名并根据查询返回不同的值。

4

1 回答 1

3

你有选择。您使用表达式的思路是正确的,但您也可能会从使用配置中受益。

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

您要么必须将每个返回值分配给它自己的传递到表达式的变量,要么使用 FOR EACH 循环并通过列表工作,每次都分配子包的位置。

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

或者,您可以简单地为配置表中的每个子包创建一条记录,并将其传递到包中。

根据评论编辑:

我成功地配置了一个包以通过配置更改以从文件系统调用一个包,然后是 SQL。

我只需要为每个传递 Connection 和 PackageName。对于 SQL,它需要来自连接管理器的名称(在我的例子中为 .\SQL2008R2)和包名称(\Package1)。对于文件系统,PackageName 是空白的,并且连接是连接管理器中的 FileConnection。

您必须将两者都保留在包中,但您可以在两者之间切换。

配置

执行前

配置后

于 2013-03-12T20:20:12.607 回答