Welcome to EMC Consulting Blogs Sign in | Join | Help

SSIS Junkie

Once upon a time this blog was a hive of activity. Now however its pretty lifeless as you can probably tell so if are pining for more of the same you can find me over at http://sqlblog.com/blogs/jamie_thomson. I look forward to seeing you there!

SSIS: Problems executing out-of-process

Hi,

I've been suffering some infuriating teething troubles with SSIS today and thought it would make sense to write about them in case a) someone else runs into the same problems and more importantly b) I run into them again(!!!)

In short, we have a package which calls a bunch of other packages using the Execute Package Task. Up until recently we were executing everything in-process (ExecuteOutOfProcess=FALSE) but because of a bunch of other problems we've been having (more on that in a future blog post) we have had to change to execute child packages out of process. This worked fine in our dev and systest environments but failed when we pushed it to production. The error that we received was created when we tried to call the child package but the error from within SSIS was fairly useless:

Error 0x80070005 while loading package file "Package.dtsx". Access is denied.

because we knew that the required permissions were in place on the folder housing the packages. However, we did have more joy when we looked at the event log:

Source: DCOM 

Description: The machine-default permission settings do not grant Local Activation permission for the COM Server application with CLSID {1838B317-D927-4ED4-8B5C-A0A52D6F6CBE} to the user CT\sysminerva-etl SID (S-1-5-21-2052111302-854245398-1177238915-963642). This security permission can be modified using the Component Services administrative tool.

Searching the registry for that CLSID came up with:

 

The class Microsoft.SqlServer.Dts.Runtime.Wrapper.PackageRemoteClass seemed synonymous with executing a package out of process so we knew we were onto something. We compared our production server to our dev and systest servers and the only difference we found was that the account that executes our packages was not in the Administrators group. Optimistically we added the account to the Administrators group and reran. The same problem ocurred however and we were back to feeling glum.

Then our server guy had a brainwave. He said that the change we'd made might not have propogated to the required permissions on the COM server application and the only way to ensure that it did was a good old reboot. After the reboot we reran and everything worked successfully! Phew!

That's all. If you experience the same problem hopefully this will help.

-Jamie

 

 

Published 04 September 2007 23:26 by jamie.thomson

Comments

 

James Dawson's Blog said:

This post started out as a comment on one of Jamie's recent posts , however, I realised that the

September 7, 2007 00:27
 

james.dawson said:

Hi Jamie,

I'm not familiar with the specific COM component you mention, but this type of issue can typically be resolved in a more secure manner by granting the relevant account the required rights (in this case 'Local Activation') via 'Component Services'.

I've posted a more detailed description here: http://blogs.conchango.com/jamesdawson/archive/2007/09/06/Configuring-DCOM-Security.aspx

September 7, 2007 00:29
 

P R W said:

Jamie,

By the Service account that runs the packages do you mean, the Service account that runs SQL Agent Service.

If so this should not be a member of the local Administrators group as this goes against the 2005 Security setup and principle of least privilege.

September 18, 2007 09:31
 

jamie.thomson said:

PRW,

No, we use a proxy account to run our packages. "Service account" was the wrong nomenclature - sorry about that. I have changed the post accordingly!

-Jamie

September 18, 2007 15:42
 

Ron Klimaszewski said:

Configuring the proxy account to have Administrator rights does not keep with a least-privilege security model.  You could have simply granted the proxy account Activate/Access permissions to the MsDtsServer Component as mentioned by james.dawson  Note that service packs and cumulative updates will overwrite this DCOM setting.

When executing an SSIS package from a SQL Agent job as a proxy on a cluster, and the proxy does not belong to the local administrators group, you have to do the following:

- grant Administrator rights to the cluster service (KB316881)

- subinacl /service MSDTC /grant="authenticated users"="F"

- sc sdset SCMANAGER D:(A;;CCLCRPRC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;MU)(A;;CCLCRPRC;;;LU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)

The section "A;;CCLCRPRC;;;AU", is the portion that changes the default DACLS on the SC Manager object.

Without doing the above, you will get access is denied or not running error messages on MSDTS.

September 19, 2007 15:40
 

Miron said:

granted to proxy account DCOM permissions for DTS Package Host component.

Out of process packages worked free of issues, ran under proxy account.

January 17, 2008 00:26
 

Beth said:

I solved this problem by using the Component Services manager to give the account running the package with the packages running out of process execute permissions for DTS Package Host  I gave that account Launch and Activate remote and local and access permissions.  Now it runs to completion.  Here's how you get there:

Start>Programs>Administrative Tools>Component Services

Open the Computers>My Computer>DCOM Config and find the DTS Package Host

Right click on the DTS Package Host, select Properties, Security

Select Customize for Launch and Activiation Permissions and for Access Permissions

Add the account you are using to run the SSIS package and give it Local and Remote Activiation and Local and Remote Access

I tried putting  the local account in the SqlServer2005DTSUsers group but that did not grant the permissions (however I did not do a reboot).

May 13, 2008 23:01
 

anilpillai said:

Jamie.

I have a parent package that is calling 4 child packages. The child packages are stored in the msdb. Two of the child packages are being called InProcess and the other two are called OutOfProcess

When I  run this from BIDS, the InProcess packages always runs fine, but the OutOfProcess packages fails. I switch the OutOfProcess to InProcess for the two failed, it runs fine again.

I can't seem to nail the problem here - I am thinking something is preventing the additional threads from being opened up in the OS.

And each test run produces different and fairly vague error messages:

1. Error: Error 0x8002801D while preparing to load the package. Library not registered

2. Error: Error 0x80004005 while preparing to load the package. Unspecified error .

Environment

(64 Bit Win2008 EE, SS2005 EE, Dual 6-Core Proc, 32GB)

Any idea what is going on here?

Thanks

Anil

May 20, 2009 18:03
 

anilpillai said:

Oh and one more point to add to this to the above question: Instead of executing the parent package in its entirety, if I click on the 'outofprocess' childpackage call and execute just that, it runs just fine. Run the entire parent package all at once, and the outofprocess fails.

If I add precedence constraints between the child packages, then it runs to completion as well.

Any help is appreciated.

May 20, 2009 18:41
New Comments to this post are disabled

This Blog

Syndication

Powered by Community Server (Personal Edition), by Telligent Systems