“Cannot create an instance of OLE DB provider” error as Windows Authentication user

后端 未结 7 1271
借酒劲吻你
借酒劲吻你 2020-12-24 02:47

I am trying to run openrowset from MS SQL Server on an Oracle server.

When i execute the following command:

select * from
OPENROWSET(\'OraOLEDB.Oracl         


        
7条回答
  •  南方客
    南方客 (楼主)
    2020-12-24 03:37

    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 (CTRL + R) “dcomcnfg”. 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.

提交回复
热议问题