卸载 32 位版本的 Oracle 客户端后 SSIS 中的 Oracle 连接中断

Oracle connections broken in SSIS after uninstalling 32bit version of oracle client

我在尝试测试连接时收到以下错误消息:

Test connection failed because of an error in initializing provider. The 'OraOLEDB.Oracle.1' provider is not registered on the local machine

我最初在我的工作机器上安装了 32 位和 64 位版本的 Oracle 12 客户端。我卸载了 32 位版本,因为它与另一个应用程序有一些冲突,但现在卸载后我不能再在 SSIS 中使用我的 oracle 连接。

我正在使用 Visual Studio 2017 - 我很确定我安装了 64 位版本的 SSDT,但看起来它们安装在 86x 程序文件夹下。我仍然可以通过 TOAD 连接,所以我认为这看起来是 SSIS 未指向 64 位安装的问题。我可以手动设置SSIS指向64位版本,还是需要重新安装32位?

TSN_Admin 设置为 oracle12c_64 tsnname.ora 文件。我也尝试过在 oraoledb12.dll 文件上使用 regsvr32.exe,但我收到一条错误消息,即使在 运行 命令提示符之后,我也是如此:

The Module "OraOLEDB.dll" was loaded by the call to DllRegisterServer failed with error code 0x80070005.

我可以重新安装32位版本,但我需要先等待我公司的IT部门批准请求。我可能要过几天才能收到回复。

更新 1 - Visual Studio64 位

搜索后好像没有Visual Studio 64位版本:

  • Visual Studio 64 bit?

初始答案

不知道有没有这方面的官方文档,但是根据我自己的经验你需要在developpement机器上安装oracle client 32位,因为SQL Visual studio 的服务器数据工具是一个 32 位应用程序,它不能用于 64 位 oracle 客户端。

但是如果您使用的是 oracle 64 位客户端,则可以毫无问题地执行 .dtsx 包,您需要使用适当的 DtExec 路径:

32 位

C:\Program Files (x86)\Microsoft SQL Server0\DTS\Binn\DtExec.exe

64 位

C:\Program Files\Microsoft SQL Server0\DTS\Binn\DtExec.exe

在搜索时,我发现了很多其他观点相同的链接: