MS SQL 2008 - 设置 Oracle 链接服务器

MS SQL 2008 - 设置 Oracle 链接服务器

我正在尝试在 MS SQL 2008 R2 上设置一个链接到 Oracle 11g 服务器的服务器。我已经安装了 Oracle 客户端,并从服务器复制了 sqlnet.ora、tnsnames.ora 和 listener.ora,并将它们设置为以下值:

sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES= (NTS)

名称.目录路径= (TNSNAMES,EZCONNECT)

tnsnames.ora

甲骨文 =

 (DESCRIPTION = 

   (ADDRESS = (PROTOCOL = TCP)(HOST = slug.blue.local)(PORT = 1521)) 
   (CONNECT_DATA = 
       (SERVER = DEDICATED) 
       (SERVICE_NAME = oracle.blue.local)
   )
 )

监听器

听众 =

  (DESCRIPTION_LIST =

      (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = slug.blue.local)(PORT = 1521))
       )
   )

但在创建新的链接服务器时我总是收到此错误

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

附加信息:

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

  • 无法初始化链接服务器“ORACLE”的 OLE DB 提供程序“OraOLEDB.Oracle”的数据源对象。

    链接服务器“ORACLE”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息

    “ORA-12504:TNS:侦听器未在 CONNECT_DATA 中提供 SERVICE_NAME。”(Microsoft SQL Server,错误:7303)

有人能发现我的配置有什么问题吗?

是否有其他方法可以指定 SERVICE_NAME,或者所有内容都来自 oracle 客户端中的 .ora 文件?

答案1

从语法上看,我认为您的 TNSNAMES.ora 文件没有任何问题。我能够将其复制/粘贴到我的文件中并更改主机名和服务名,然后成功连接。

尝试使用 SQL*Plus 连接。这是否会出现相同的错误?您可以使用 EZCONNECT 语法进行连接:sqlplus user@'slug.blue.local:1521/oracle.blue.local'?

您的本地系统上是否安装了多个 Oracle 客户端?

另外,尝试一个基本的 TNSNAMES.ORA 文件,其中只包含您发布的条目。

另外,您是否尝试使用 tnsnames.ora 文件连接 SQL*Plus?例如,sqlplus user@oracle

相关内容