【问题标题】:Advice on using Execute Process Task vs Execute Package Task in ssis在 ssis 中使用 Execute Process Task 与 Execute Package Task 的建议
【发布时间】:2013-11-21 10:11:26
【问题描述】:

我有一个调用几个子 pkg 的父 pkg。对于每个子 pkg,我有一个 sql 代理作业,它将覆盖 dtexec 中的一些 Conenctions 值,您可以在其中使用方便的 /Conn[ection] 以不同的方式配置 pkg,只需指向一个差异 SQL SSIS Conf 表(常见模式)。问题是执行包任务(由父级调用)没有任何选项,而不是调用子 pkg 本身(我不能调用执行包任务像 /Conn[ection] 那样传递 smth,就像我可以用 dtexec 做的那样)所以很自然coice 将使用 Execute Process Task 通过适当的 /Conn[ection] 设置在 Child pkg 上调用 dtexec。根据您的经验,在使用 Execute Process Task DTEXEC 而不是 Execute Package Task 时是否需要考虑任何缺点/问题,或者它们最终是一样的......? 马里奥

【问题讨论】:

  • 您可以将包配置为通过包参数设置其连接。 Execute Package 任务允许您设置这些包参数,使您的连接可配置。

标签: ssis package parent dtexec


【解决方案1】:

我看到的处理方式是创建一个变量来保存文件夹路径和变量来保存每个子包的包名。这些应该添加到父包中。

然后在子包的连接管理器中,您可以编写一个表达式来动态设置连接字符串。右键单击并在连接管理器中选择连接的属性,然后连接这两个变量。

表达式代码:

@[User::sPkgFolder]+ @[User::sPkgFilename]

此外,您可以设置 XML 配置文件并通过 XML 文件设置变量,这样当您将包从一个环境移动到另一个环境时,您不必手动更改代码库,而只需更改配置文件中路径的值。您还可以根据需要设置尽可能多的变量来保存所有子包。

【讨论】:

  • 嗨@SWilliams,谢谢我正在推动使用xml间接配置,因为这将完全避免更改代码。
【解决方案2】:

正如 SWilliams 已经解释的那样,您可以使用执行包任务将父包变量发送到子包,然后在子包中,您可以在表达式中使用此变量来设置连接。这比使用 SQL 代理、配置等要复杂得多,并且还有一个额外的好处,即如果您并行运行它就不会感到困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多