在64位SQL连接上使用32位Oracle ODAC驱动程序

问题描述:

我的服务器上安装了ODAC 32位驱动程序,64版本无论如何都不适合我。在64位SQL连接上使用32位Oracle ODAC驱动程序

所以我必须使用这个32位驱动程序,它工作得很好,我的asp.net应用程序......但现在我不能用它来通过SQL Server连接。

我需要做一个临时任务来从oracle数据库每天提取数据。

这里的想法是使SQL作业来提取所述数据。从我的理解,我需要一个linkedserver到所述Oracle数据库。

我创建的链接服务器,它是这样的:

exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1 
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 

exec sp_addlinkedserver N'UT', 'Oracle', 'ORAOLEDB.Oracle', N'//xxx.xxx.xxx.xxx/', N'FetchSize=2000', '' 
exec master.dbo.sp_serveroption @server=N'UT', @optname=N'rpc out', @optvalue=N'true' 

exec sp_addlinkedsrvlogin @rmtsrvname='UT', @useself=N'FALSE', @rmtuser=N'xxxxxx', @rmtpassword='xxxxxx'  

当试图连接它虽然使我有以下错误:

El proveedor OLE DB de 32 bits "ORAOLEDB.Oracle" no se puede cargar en proceso en un servidor SQL Server de 64 bits. 

翻译:

The OLE DB provider of 32 bits "ORAOLEDB.Oracle" can not be loaded on process in a SQL Server of 64 bits. 

我不知道该从这里做什么,我甚至不确定这是否是我需要的最佳解决方案无论是。

我没有访问外部Oracle数据库本身,只有一个连接字符串。

有什么建议吗?

+0

不好意思,这听起来像你的SQL Server是64位的,因此需要一个64位的oledb驱动程序。鉴于64位操作系统,32位与64位驱动程序的问题是应用程序调用它的问题。 32位应用程序和32位驱动程序,64位应用程序和64位驱动程序。 – EdStevens

+0

为什么不使用[管理驱动程序](https://www.nuget.org/packages/Oracle.ManagedDataAccess/),它完全使用.NET编写,并避免了所有32位和64位问题? – mason

尝试使用OPENROWSET函数。这与使用链接服务器的不同之处在于连接是即时进行的 - 该命令要求将连接信息包含在呼叫中。该命令可能相当复杂,因此请参阅BoL文档了解详细信息。