Strange one this... (Windows Server 2008 x64, SSIS 2008 Enterprise x64 SP1)
I store all of my packages on the filesystem. Their actual location is configured via an environment variable - FolderValidRoot, which points to say...D:\SSIS\.
Then, when I want to execute a child package from a parent package, I set the connection manager up as follows
The Parent package has an expression on a variable FolderPackages something like this
Folder Packages = @[Template::FolderValidRoot] + "Packages\\", which gives me D:\SSIS\Packages
The parent package then has an expression on the connection manager of the child package @[Template::FolderPackages]+"STG_picture.dtsx", which gives me D:\SSIS\Packages_STG.dtsx
So, essentially, I'm dynamically configuring the location of the child package, based on the environment variable. The Parent package then iterates through a series of things and executes the child package 47 or so times.
So far, so straightforward. I'm sure we've all done this a million times. (The eagle eyed amongst you will have spotted that I've stolen this approach lock, stock and barrel from Jamie Thompson, so credit goes out to him...).
Now, here's the thing, for the first 40 or so (the number is not consistent) iteration, the child is called perfectly. However, sometimes, it all falls over and the following error is logged:
while loading package file "D:\SSIS\Packages\STG_picture.dtsx". The system cannot find the path specified
Buu it's found it just fine for the previous 30 or 40 or whatever iterations!!!
The package has D:\SSIS as the default value for FolderValidRoot, becuase that's where it is on my development box. But that's the whole point of a configuration - it should get overwritten by the environment variable. So it's as if the parent package is 'losing' the value of the FolderValidRoot (as set by the Environment Variable) and failing back to the default value in the package, which is obviously not much help, becuase that folder doesn't exist on this box.