客户端 环境: Windows 10 x64 + SQL SERVER 2019 x64 + SSMS 19 (x32)
无法为该请求检索数据。(Microsoft.SqlServer.Management.Sdk.Sfc)
其他信息:
执行Transact-SQL语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)
在与SQL Server 建立连接时出现与网络相关的特定于实例的错误。未找到或无法访问服务器。请验证
实例名称是否正确并且SQL Server已配置为允许远程连接(provider:命名管道提供程序,Error:40-无法打开与SQL Server的连接)
(Microsoft SQL Server,错误:2)
系统找不到指定的文件。
===================================
链接服务器已创建但连接测试失败。是否要保留该链接服务器?
===================================
执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
------------------------------
程序位置:
在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(String cmd, Boolean retry)
在 Microsoft.SqlServer.Management.Smo.LinkedServer.TestConnection()
在 Microsoft.SqlServer.Management.SqlManagerUI.LinkedServerProperties.DoPreProcessExecution(RunType runType, ExecutionMode& executionResult)
===================================
无法创建链接服务器“LN_UAT4EBS”的 OLE DB 访问接口“OraOLEDB.Oracle”的实例。 (Framework Microsoft SqlClient Data Provider)
------------------------------
有关帮助信息,请单击: https://docs.microsoft.com/sql/relational-databases/errors-events/mssqlserver-7302-database-engine-error
------------------------------
服务器名称: .
错误号: 7302
严重性: 16
状态: 1
过程: sp_testlinkedserver
行号: 1
------------------------------
程序位置:
在 Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction action, Object execObject, DataSet fillDataSet, Boolean catchException)
在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry)
解决方式 :
1、安装 ODAC122010Xcopy_32bit.zip ,安装路径: D:\ODAC12C . 安装信息在注册表里只写64位的ODBC键,
2、安装 ODAC122011_x64.zip 安装路径: D:\Odacx64 .
3、在注册表里 手工加 ODAC的安装信息。如下图
4、重启SQL SERVER服务。
5、打开SSMS 19 创建 DBLINK ,连接ORACLE 19.
注册表内容:
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\Oracle in OraClient12Home1_32bit] "APILevel"="1" "CPTimeout"="60" "ConnectFunctions"="YYY" "Driver"="D:\\ODAC12C\\SQORA32.DLL" "DriverODBCVer"="03.51" "FileUsage"="0" "Setup"="D:\\ODAC12C\\SQORAS32.DLL" "SQLLevel"="1"
测试效果:
select * from openQuery(ln_uat4ebs,'SELECT FU.USER_ID, FU.USER_NAME FROM APPS.FND_USER FU WHERE USER_ID= 24640')