I'd be curious to hear more specifics about what issues you ran into. What type of setting were you using those params/variables for? Possibly a connection string?
Just trying to set a BeginDate and an EndDate for a warehouse ETL. I first did the ETL is 2005 and all the steps are in the same package. Having read your posts and Brian Knight's SSIS 2014 book, I'm re-doing the ETL in 2016 using parent-child (and in a couple of places--grandchild as I read your post that you do that and it doesn't create an issue) architecture. I'd first set up the dates as project parameters, but found I couldn't change the value.
Parameters, whether at the package or project level, are read-only during the execution of the package; their initial values are passed in at runtime but cannot be manipulated during the execution of the package. Variables, on the other hand, can be manipulated at runtime.
Variables in a master package can drive parameters in the child package, but those parameters' values are then fixed during execution in the child package.
You both have helped my understand WHY. I was thinking of the whole thing (parent and child packages as part of the overall project) as running at once. But it seems to me that I should have been thinking that the child packages have been dormant until activated. At activation time, the begin and end dates are known and are correctly passed in as parameters. Of course I don't try to change them, so that works. This is consistent with the way the project parameters work. But if I had a value that I would need to change during the life of the package, like I did for the dates in the master package, I'd have to create a variable. Which tells me the practical difference between the two.
Thanks, and Tim, I enjoy and learn a lot from your posts.