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:
4. Go to the Security Tab, Choose ‘Customize’ and click on the ‘Edit’ Button:
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:
4. Change the owner to Administrators.
5. Now, grant ‘Full Control’ to Administrators:
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 MSDAINITIALIZEAnonymous
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. --DebarchanSAnonymous
September 13, 2013
The comment has been removedAnonymous
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.