0

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

4

2 回答 2

3

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

在此处输入图像描述

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

表达式代码:

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

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

于 2013-11-22T04:03:08.303 回答
0

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

于 2013-11-22T06:32:09.500 回答