【问题标题】:SQL Server Linked with Oracle Database与 Oracle 数据库链接的 SQL Server
【发布时间】:2019-03-29 07:00:34
【问题描述】:

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

一切看起来都不错,我可以在设置服务器时为 OLE DB 选择 Oracle 提供程序,但是当我保存我的配置时,我收到以下错误:

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

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

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

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


节目地点:

在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType, Boolean retry) 在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(字符串 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


服务器名称:本地主机 错误号: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)

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

有没有办法测试这是否是在 Oracle 服务器上找不到 TNSNAMES 与某种防火墙问题的问题?

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

【问题讨论】:

    标签: sql-server oracle linked-server tnsnames


    【解决方案1】:

    这个问题的关键是这一行:

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

    解决方案是转到提供程序选项并检查允许进程。如下图:

    我无法准确解释它的作用,但 this guy 做得很好。

    【讨论】:

    • 确保重新启动数据库服务以使其工作。
    【解决方案2】:

    下一个家伙还有 3 个可能的原因:

    1. 确保为 oracle 设置了环境变量路径。在我的情况下,第一个对象是 C:\oracle 和 C:\oracle\bin
    2. 确保在 C:\oracle\network\admin 中有 TNS 文件
    3. 确保在完成这些操作后重新启动机器

    注意:如果使用 ODAC XCopy,请确保彻底阅读 zip 下载中的 readme.htm 文件(说明有所不同)。还可以使用以管理员身份运行的命令提示符运行 install.bat 命令。

    更新系统PATH 变量时,请尝试同时对用户和系统执行此操作。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2016-08-12
    • 2010-12-10
    • 1970-01-01
    • 2011-03-27
    • 2011-09-01
    • 2016-11-03
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多