9
votes

I've a Master package where in I'm calling several packages using Execute package task.

Both child and master packages don't have any configuration and are connecting OLEDB (SQL Server) using hardcoded SQL authentication connections in the connection managers.

Also the packages have encrypt sensitive with the password.

Strange behavior seen: 1. Child Packages run successfully when run from BIDS but fail when run from master packages with Acquire Connection failure

"The AcquireConnection method call to the connection manager failed with error code 0xC0202009"

Can someone help with the resolution for this?

2
The strange behavior continues: Child package runs successfully from MSDB, BIDS but fails when executed from a master SSIS package.user46795
Have you provided the password for the child package when you attempt to run the package from the master package?john.da.costa
Include a config file for the master package and then select the property PackagePassword for the component Execute Package Task .Open the xml file which was created and store the password and use this file in SQl Agent Data Configuration Tab.Explained in detail belowpraveen

2 Answers

3
votes

It seems that your child package is not getting the connection string from your parent package .You need to pass connection string from Parent to child package .

Check this article

Update :-

When you have EncryptSensitiveWithPassword as an access control for both your child and parent package then while executing the child pkg from parent package

You will be prompted to enter the password for your child package during execution .

There may be scenarios that even after entering the password at the run time child pkg execution fails due to acquire connection error .This may happens ( im not sure ) due to the child connection string (In Execute Package Task ) which may still be pointing to the old child package which has not been rebuild after the modification .

My Suggestion is when you drag a Execute SQL Task onto the control flow use the file System Location and point to the updated child package placed in the bin folder ( or your deployment path ) and enter the password of your child package in the task

enter image description here

In order to run the parent package from Integration Service (MSDB) then you need to some how pass the child decryption key while executing at run time .

Edit : Step 1 : Create a Package Configuration for parent SSIS package .Execute Package Task has a property PackagePassword.You need select this property while creating the config file

      Executables->ExecutePackageTask->PackagePassword

enter image description here

Step 2 : After creating the XML file open it and search for the ConfiguredType=property and in the configured Value enter the password for your child package

enter image description here

Step 3:After importing the parent package in MSDB select the configuration file in the configuration tab enter image description here

1
votes

64/32 bit error? Do you have excel connection managers as source maybe?

Dtexec have both a 64-bit and a 32-bit application. I assume that when you run from BIDS, it uses the 32 bits dtexec and how are you running the master? If you are double clicking it, that may be the issue because DTExecUI (Execute Package Utility) is available only as a 32-bit application. If you are working on a 64-bit server and run a package through the DTExecUI , the package will run in 32-bit emulation mode. Furthermore, the package might fail if the connection managers used are not 32-bit compliant.

Be sure to note that if you develop a package in a 32-bit environment and want to run the package in a 64-bit environment, the connection managers need to be 64-bit compliant. Some connection managers such as Excel work in a 32-bit environment only.

EDIT: try setting the password here: enter image description here