关于在ssis中使用执行进程任务与执行包任务的建议

时间:2013-11-21 10:11:27

标签: ssis package parent dtexec

我有一个父pkg,可以调用几个孩子pkgs。对于每个子pkg,我有一个sql代理作业,它将覆盖dtexec中的一些Conenctions值,在这里你可以使用方便/连接来使pkg配置以不同的方式简单地指向diff SQL SSIS Conf表(共同模式)。问题是执行包任务(由父进程调用)没有任何选项而不是调用子pkg本身(我不能调用执行包任务传递smth像/ Conn [ection],因为我可以用dtexec)所以自然coice将使用Execute Process Task在Child pkg上使用适当的/ Conn [ection]设置调用dtexec。根据您的经验,使用执行流程任务DTEXEC而不是执行包任务时要考虑的任何缺点/问题,或者它们在最后是相同的东西......? 马里奥

2 个答案:

答案 0 :(得分:3)

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

enter image description here

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

表达代码:

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

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

答案 1 :(得分:0)

正如SWilliams已经提到的那样,您可以使用执行包任务将父包变量发送到子包,然后在子pacakge中,您可以在表达式中使用此变量来设置连接。这比使用SQL Agent,配置等要复杂得多,并且还有额外的好处,如果你并行运行它就不会混淆。