SQL Server与Oracle数据库链接

时间:2018-10-24 18:57:30

标签: sql-server oracle linked-server tnsnames

我正在使用SQL Server 2017,正在尝试将链接服务器设置为Oracle数据库。我安装了ODAC并更新了PATH,以包括ODAC安装中的Oracle根目录。

一切看起来都很好,并且可以在设置服务器时为OLE DB选择Oracle Provider,但是当我保存配置时,出现以下错误:

  

==================================

     

已创建链接服务器,但连接测试失败。您要保留链接服务器吗?

     

==================================

     

在执行Transact-SQL语句或批处理时发生异常。 (Microsoft.SqlServer.ConnectionInfo)

     
     

程序位置:

     在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery中的

(字符串sqlCommand,ExecutionTypes执行类型,布尔重试)      在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd,布尔重试)      在Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection()      在Microsoft.SqlServer.Management.SqlManagerUI.LinkedServerProperties.DoPreProcessExecution(RunType runType,ExecutionMode&executionResult)

     

==================================

     

无法为链接服务器“ UDW”创建OLE DB提供程序“ OraOLEDB.Oracle”的实例。 (.Net SqlClient数据提供程序)

     
     

要获取帮助,请单击:http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.00.5081&EvtSrc=MSSQLServer&EvtID=7302&LinkId=20476

     
     

服务器名称:localhost   错误号:7302   严重程度:16   状态:1   过程:sp_testlinkedserver   行号:1

     
     

程序位置:

     在Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql中的

(ExecuteTSqlAction操作,对象execObject,数据集fillDataSet,布尔值catchException)      在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(字符串sqlCommand,ExecutionTypes执行类型,布尔重试)

此错误消息并非完全有帮助,如果您单击Microsoft链接,它将重定向到Microsoft主页(感谢Microsoft!)

有没有一种方法可以测试这是在Oracle服务器上找不到TNSNAMES还是某种防火墙问题的问题?

我能够在同一网络中的另一个数据库上设置LinkedServer,因此我可以确认TNSNAMES完全相同,并且所使用的凭据有效。

1 个答案:

答案 0 :(得分:0)

此问题的关键是此行:

  

无法为链接服务器“ UDW”创建OLE DB提供程序“ OraOLEDB.Oracle”的实例。 (.Net SqlClient数据提供程序)

解决方案是转到提供程序选项,然后选中“允许进程内”。如下所示:

enter image description here 我无法确切解释其作用,但是this guy做得很好。