按照我们多年来对 Oracle 和 SQL Server 的先前版本使用的标准程序,我已将 Oracle 的最新 ODAC 包(包括 Oracle OLE 驱动程序)安装到我们新的 SQL Server 2008 R2 x64 节点上。我已按建议重新启动系统,但 OraOLEDB.Oracle 未显示在 SSMS 中的 Linked Servers\Providers 节点中。此安装与先前 SQL Server 安装之间的唯一区别是我现在使用的是 SQL Server x64(在 Windows 2008 R2 上)。这有什么区别吗?
请注意,我能够使用 SQL*Plus 直接从 SQL Server 节点连接到 Oracle 服务器。我唯一缺少的是提供程序。有人知道我缺少什么吗?网上有很多帖子,但似乎有很多混乱和过时的 Oracle 下载页面链接。
我唯一需要做的就是创建一个链接到 Oracle 的服务器,并针对它运行选择查询。我不需要通过 Visual Studio 做任何事情。
答案1
经过几个小时的研究,我设法拼凑了一些 Oracle 11g R2 的工作说明。事实证明,您可能需要安装 32 位和 64 位客户端才能在 BIDS/Visual Studio/SSMS 中运行。我可能安装了比我需要的更多的 Oracle 组件,但以下是对我有用的:
- 从以下位置下载 32 位和 64 位客户端http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html (单击“查看全部”可查看不同版本,否则,您将下载完整的 Oracle 程序。每次下载大约需要 600 MB)
- 在 SQL Server 上运行 32 位安装。选择“自定义”
- 对于 Oracle Base,输入“C:\Oracle”
- 对于“软件位置”,更改为 C:\Oracle\product\11.2.0\client_三十二
- 选择以下组件:
- SQL*Plus
- Oracle 调用接口 (OCI)
- 甲骨文网络
- 针对 Microsoft Transaction Server 的 Oracle 服务
- 适用于 Windows 的 Oracle 管理助手
- 用于 OLE DB 的 Oracle 提供程序
- 适用于 .NET 的 Oracle 数据提供程序
- 适用于 ASP.NET 的 Oracle 提供程序
- 使用 64 位安装程序重复上述步骤。但是,将“软件位置”更改为 C:\Oracle\product\11.2.0\client_64
- 此时我得到了一个内存错误,但我选择忽略它,因为我知道已经足够了
- 忽略错误“OracleMTSRecoveryService 已存在”
现在安装已完成,只需调整一些东西。
- 更改注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
OracleOciLib
应该oci.dll
OracleSqlLib
应该orasql11.dll
OracleXaLib
应该oraclient11.dll
- 制作相同的注册表更改为
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDTC\MTxOCI
tnsnames.ora
在 C:\Oracle\product\11.2.0\client_ 中创建或复制一个新文件三十二\网络\管理员tnsnames.ora
在 C:\Oracle\product\11.2.0\client_ 中创建或复制一个新文件64\网络\管理员- 重启!
- 您现在应该可以
OraOLEDB.Oracle
在 SSMS 中的 Linked Servers\Providers 下看到提供程序 - 右键单击此提供程序,然后单击“属性”,然后勾选“允许进程内”框
- 您现在可以通过 GUI 或 T-SQL 创建链接服务器
祝你好运!
答案2
是的,系统架构使得很多的差異。
您需要安装适用于 Windows 的 x64 Oracle 客户端软件。