错误 3706 找不到提供程序。它可能没有正确安装

error 3706 provider cannot be found. it may not be properly installed

全部。

我使用了 How to securely store Connection String details in VBA

上解释的 DLL 方法

此代码在 windows 10 64 位和 MS Office 64 位上 运行 非常好。但是我无法在 Wndows 8.1 Pro 和 MS Office 64 位上使用相同的文件副本。

使用

将生成的DLL转换为主机环境
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\regasm c:\windows\syswow64\OraConnection.dll /tlb /codebase

但我仍然面临同样的错误。关于环境变量的注意事项。 我的连接字符串是

"Provider=OraOLEDB.Oracle; Data Source = ;  User ID =; Password=";

除了简单的混淆之外,我不确定 DLL 能为您带来什么。你所做的只是让它更难到达,但实际上并没有在任何有意义的意义上保护它的隐私。我对连接字符串管理的一般建议是 不要 保存 user/password。相反,要求用户在运行时输入 username/password 并确保您的 OLEDB 连接中有 Persist Security Info=false。这样一来,一旦打开,就无法访​​问完整的连接字符串,也没有对密码的引用。这比将它粘贴在 DLL 中的变量中并祈祷没人知道如何读取内存转储或附加调试器要安全得多。

也就是说,这与您的问题无关,无法使用提供程序。我要做的第一件事是通过删除 DLL 并直接使用提供程序来排除 DLL 是否导致了您未预料到的问题。如果它同样失败,那么您就知道 DLL 与它无关,您需要使用 Oracle 的提供程序文档来找出问题的根源。

在 Succesfull 机器上,我使用 用于 ODAC 12.2c 第 1 版的 12.2.0.1.0 版 作为 oracle 客户端。

但看到 oracle 客户端的最新版本为 64 位 ODAC 12.2c Release 1 (12.2.0.1.0) for Windows x64 已发布2017 年 6 月 1 日

安装相同。我的错误已解决。当我观察系统环境变量时,我看到添加的东西很少。 E:\app\client\Admin\product.2.0\client_1;E:\app\client\Admin\product.2.0\client_1\bin;C:\Users\Admin\Oracle\;

我不知道他们到底做了什么。但错误已解决。

有人可以高亮显示吗?