共用方式為


Troubleshooting “Cannot create an instance of OLE DB provider”

Today I am going to blog about a frequent issue that we come across while creating linked server-:

Cannot create an instance of OLE DB provider "MSDADASQL" for linked server "MyDB2"

In this scenario I was creating a linked server to a DB2 server, but everything explained in this blog holds good for any linked server.

This error mostly happens due to security issues with DCOM class MSDAINITIALIZE . We needed to alter the DCOM Class MSDAINITIALIZE security settings to make it work.

Following are the steps:

1. Open Component Services (Start>Run>DCOMCNFG)

2. Expand Component Services>Computers>My Computer>DCOM Config

3. From the list of DCOM components on the right side, select MSDAINITIALIZE and go to its properties:

clip_image002

4. Go to the Security Tab, Choose ‘Customize’ and click on the ‘Edit’ Button:
clip_image003

5. Add the Domain User who is accessing the linked server and ‘Allow’ all the permissions available (Local Launch, Remote Launch, Local Activation, Remote Activation). If you are connecting to SQL server using SQL account, you need to provide this permission to the account under which the SQL service is running.

6. Do this for all the 3 sections in the above screenshot.

In Windows Vista onwards, a system account called TrustedInstaller owns the MSDAINITIALIZE class and does not allow normal domain accounts to edit the properties of this class. MSDAINITIALIZE is greyed out because only TrustedInstaller has the write permissions on it.

To edit the Security settings, we followed the below steps:

1. Start > Run > Regedit

2. Find the Key: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{2206CDB0-19C1-11D1-89E0-00C04FD7A829}

3. Right Click>Permissions>Advanced>Owner Tab:

clip_image004

4. Change the owner to Administrators.

5. Now, grant ‘Full Control’ to Administrators:
clip_image005

After this you should be able to edit MSDAINITIALIZE security settings .

Hope this post would be helpful for you. Happy Coding!!

Author : Snehadeep(MSFT), SQL Developer Engineer, Microsoft

Reviewed by : Debarchan(MSFT), SQL Developer Engineer, Microsoft

Comments

  • Anonymous
    June 22, 2012
    Thanks. able to setup linked server as out of process with giving access to MSDAINITIALIZE

  • Anonymous
    September 05, 2012
    Thanks a lot!!!

  • Anonymous
    April 08, 2013
    The Security tab controls are greyed out on Windows 2012 Server. I guess a system policy should be changed to allow editing on the tab.

  • Anonymous
    April 10, 2013
    Hey Bud, You are correct. Please check how to enable that from point no. 6 onwards in the blog above. --DebarchanS

  • Anonymous
    September 13, 2013
    The comment has been removed

  • Anonymous
    September 16, 2014
    Hi Guys,  do I set these permissions on my SQL server or on my linked server?

  • Anonymous
    October 12, 2014
    I had done the above steps but things didnt work. for me the linked server -> oracle is working fine for users who has local admin privileges, But it doesnt work only for people who doesnt has local admin privileges. so i followed the above steps and added and provided privileges for the login id for the users who are facing the issue. but the issue persist still.  I tried to enable allow in process too but nothing worked. I have sql 2008r2 connecting oracle oracle.oledb provider.

  • Anonymous
    December 05, 2014
    Hi, Thank for your post ... It helped me to fix this same issue with Windows Server 2008 R2 and SQL Server 2014. Regards,

  • Anonymous
    October 15, 2015
    please help..i am trying to do these steps but i can't continue..the MSDAINTIALIZE properties' security tab options are disabled, i can't edit an options. what do i do? tia everyone.