2013-11-21 153 views
0

我有一个调用几个子pkgs的父pkg。对于每个子包,我有一个SQL代理作业,它将覆盖一些与dtexec一样的Conenctions值,在那里你可以使用方便/连接来以不同的方式配置pkg,只需指向一个diff SQL SSIS Conf表常见模式)。问题是执行包任务(由父级调用)没有任何选项,而不是调用子级pkg本身(我不能像调用dtexec那样调用执行包任务传递像/ Conn [ection]一样的smth),所以自然coice将使用Execute Process Task通过适当的/ Conn [ection]设置调用Child pkg上的dtexec。根据你的经验,在使用执行进程任务DTEXEC而不是执行包任务时需要考虑的任何缺陷/问题,或者它们在最后都是同样的东西......? Mario在ssis中使用执行进程任务与执行包任务的建议

+1

您可以配置程序包以使其连接通过程序包参数进行设置。 “执行包”任务允许您设置这些包参数,使连接可配置。 – TsSkTo

回答

3

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

enter image description here

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

表达代码:

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

此外,您可以建立一个XML配置文件,并通过XML文件中的变量,这样当你从环境中移动的套餐环境您不必手动更改代码库,但只需要更改配置文件中路径的值。您也可以设置尽可能多的变量来保存您的所有子包。

+0

嗨@SWilliams,谢谢我推荐使用xml间接配置,因为这样可以避免更改代码。 – mario

0

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