【问题标题】:How can I dynamically set the location of an Execute Package Task in SSIS如何在 SSIS 中动态设置执行包任务的位置
【发布时间】:2013-03-12 19:53:16
【问题描述】:

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

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

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

【问题讨论】:

    标签: configuration ssis package task execute


    【解决方案1】:

    你有选择。您在使用表达式时处于正确的思维框架中,但您也可能会从使用配置中受益。

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

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

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

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

    基于 cmets 编辑:

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

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

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

    【讨论】:

    • 嗨,Vinnie,感谢您的回答,但我所追求的是如何更改“执行包任务”的设置,以便我们可以在开发时从文件系统运行“子”包,以及部署后,从 SQL Server 运行它。该选项位于“Package”下,值为“Location”和“Connection”。谢谢..
    • 当您知道在哪里寻找和做什么时,SSIS 的强大功能令人惊叹,我不知道您是如何想到的,但非常感谢您,做得好。我早上回到办公室,所以会检查您的解决方案,并希望将其标记为已回答。
    猜你喜欢
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多