Tuesday, August 12, 2008

SAS Integration Technologies and Vista

Ok, I am sure that I will get some grief about this but I needed to submit my SAS code from a .NET application. this was on my new PC which is running Vista 32. Anyway, no matter what I did, I kept getting the following error:

"Retrieving the COM class factory for component with CLSID {440196D4-90F0-11D0-9F41-00A024BB830C} failed due to the following error: 80040154."

Well, normally that is addressed by simply installing the IntTech client and setting permissions to None in dcomcnfg. It didn't work this time.

Here is what i did to fix it (people can try these in isolation to see which one is the root):

1. Right-click on the the inttech.exe file and run it in compatibility mode for Win XP SP2

2. Go into dcomcnfg and set every single SAS DCOM object with permissions of None.

I could play with this some more but I am now behind.

Update 3/31/2010

This worked for me on Windows 7 64 and when the dcom stuff failed:

To register the IOM server,

1) Copy SASVRSRV.DLL from !SASROOT\CORE\SASEXE which can be found on
the SAS System CD or a Network copy of SAS to your Client
!SASROOT\CORE\SASEXE directory.

2) From a command prompt run !SASROOT\SAS.EXE /REGSERVER

6 comments:

Anonymous said...

Alan,

Try this:

http://listserv.uga.edu/cgi-bin/wa?A2=ind0803A&L=sas-l&P=R8359&m=251486

Regards, Audi

Unknown said...

That CLSID is the SAS.Workspace 1.0, and the 0x80040154 means "class not registered".

If you're working with local SAS, this can be fixed with "sas /register" from your command prompt (in the SAS application directory).

On Vista, you might need to open your CMD window with "Run as Administrator" to affect this type of change - it hits the registry.

For remote SAS sessions, your inttechc\setup fix probably did the trick, because it registers the SAS.tlb (typelib) as part of its work. Again, you might have to Run as Administrator, but your "compatibility" mode approach might have amounted to the same thing.

Anonymous said...

Alan,

I don't have a Unix question. But was wondering what ever happened to the Fireworks business. Did it explode like the Pinto?

Savian said...

I believe the proper command to register the clssids is sas /regserver. That worked for me.

Sha said...
This comment has been removed by the author.
Savian said...

I got this one running on Windows Server 2008 R2. Go into DCOMCNFG and add NETWORK SERVICE to the Launch Permissions.

===============================

InnerException = {"Retrieving the COM class factory for component with CLSID {440196D4-90F0-11D0-9F41-00A024BB830C}
failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))."}

SAS throwing RPC error

If you are doing code in C#  and get this error when creating a LanguageService: The RPC server is unavailable. (Exception from HRESULT:...