我无法找到有关子包读取父包变量的时间和方式以及它们是否可能受到竞争条件影响的任何可靠信息。
我们的团队正在SSIS 2008系统中构建一个系统来处理大量文件。我们想要一个单一的入口点(父包)来获取文件,检查一些配置并有条件地调用几个子包中的一个来处理它。
某些值(如文件名)需要传递给子包。我想知道的是,这些是通过引用还是通过值传递的。
如果我运行MainPackage for file X.txt,它启动ProcessXPackage,然后(当它仍在运行时)我运行MainPackage for file Y.txt,它启动ProcessYPackage,是否存在ProcessXPackage可能随后的危险读取文件名为Y.txt?
或者是子包在本地启动和存储时读取的值,因此无法进行修改?
甚至可以在ProcessXPackage已经运行时第二次运行MainPackage,因为它位于其堆栈中?
答案 0 :(得分:0)
通过父包变量可配置的值是单向的,子包将使用父包变量来配置自身,但在不同级别的两个变量之间没有链接。子进程只是在执行时开始时从父变量复制值。
您是在开发中运行还是已将软件包部署到服务器?
<强>开发强> 您只能运行MainPackage的一个实例,因此这不会成为问题
<强>部署强> 部署后,您可以执行两次相同的程序包(MainPackage),但只能在单独的进程中执行。由于执行相同程序包的单独实例不会相互影响(由于进程不同),因此每个进程将使用自己的配置(对于文件Y.txt或文件X.txt),因此您的程序包将正确执行这两种配置。