首页 > 代码库 > Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".
Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".
在SQL SERVER 2008 R2下用Windows 身份认证的登录名创建了一个访问ORACLE数据库的链接服务器xxxxx,测试成功,木有问题,但是其它登录名使用该链接服务器时,报如下错误:
消息 7302,级别 16,状态 1,第 1 行
Cannot create an instance of OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxxx".
此时需要在“服务器对象”——>“链接服务器”——>“访问接口”下,找到OraOLEDB.Oracle选项,单击右键选择属性,然后在访问接口选项下勾选“允许进程内”(Allow inprocess)。即可解决上面问题,有时候,可能需要重新新建此链接服务器。
老外给出了一个解决这个问题的步骤,相当详细严谨,几乎面面俱到。可以作为参考学习的好资料:
Ran into this issue where the linked server would work for users who were local admins on the server, but not for anyone else. After many hours of messing around, I managed to fix the problem using the following steps:
1:Run “dcomcnfg.exe”. Navigate to “Component Services -> Computers -> My Computer -> DCOM Config”.
2:Open the properties page of “MSDAINITIALIZE”.
3:Copy the “Application ID” on the properties page.
4:Close out of “dcomcnfg”.
5:Run “regedit”. Navigate to “HKEY_CLASSES_ROOT\AppID\{???}” with the ??? representing the application ID you copied in step #3.
6:Right click the “{???}” folder and select “Permissions”
7:Add the local administrators group to the permissions, grant them full control.
8:Close out of “regedit”.
9:Reboot the server.
10:Run “dcomconfig”. Navigate to “Component Services -> Computers -> My Computer -> DCOM Config”.
11:Open the properties page of “MSDAINITIALIZE”.
12:On the “Security” tab, select “Customize” under “Launch and Activation Permissions”, then click the “Edit” button.
13:Add “Authenticated Users” and grant them all 4 launch and activation permissions.
14:Close out of “dcomcnfg”.
15:Find the Oracle install root directory. “E:\Oracle” in my case.
16:Edit the security properties of the Oracle root directory. Add “Authenticated Users” and grant them “Read & Execute”, “List folder contents” and “Read” permissions. Apply the new permissions.
17:Click the “Advanced Permissions” button, then click “Change Permissions”. Select “Replace all child object permissions with inheritable permissions from this object”. Apply the new permissions.
18:Find the “OraOLEDB.Oracle” provider in SQL Server. Make sure the “Allow Inprocess” parameter is checked.
19:Reboot the server.
Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server "xxxxxxx".