【问题标题】:What options are available for connecting to a Microsoft SQL Server database from an Oracle database?哪些选项可用于从 Oracle 数据库连接到 Microsoft SQL Server 数据库?
【发布时间】:2026-01-03 17:40:02
【问题描述】:

目前,我使用定制的 JDBC 连接器从远程 MS SQL Server 数据库中提取数据。这工作正常,但感觉不像这样做的方式。

我觉得我应该能够将 JDBC 连接字符串放入服务器上的 tnsnames 并让它“正常工作”。我已经四处寻找这个功能,但它似乎不存在。

通过这种方式,我可以仅使用数据库链接连接到几乎任何数据库。

我错过了什么吗?


看起来这两个选项是通用连接和 Oracle 网关,但我很惊讶这就是全部。 Generic Connectivity 附带数据库许可证,Oracle Gateways 是一个附加组件。对于通用连接,如果您在 Linux 上运行(像我一样),则需要获取 ODBC 驱动程序,因为它没有与数据库捆绑。

但是...由于 Oracle 是如此热衷于 Java 的粉丝,并且在数据库中内置了 JVM,我原以为基于 JDBC 的链接技术会是一件轻而易举的事。在 TNSNAMES 中有一个 JDBC 连接字符串似乎是一个自然的扩展,一切都会“正常工作”。

有人知道为什么这不可用吗?

【问题讨论】:

    标签: sql-server oracle jdbc tnsnames


    【解决方案1】:

    Generic Connectivity 是你所追求的,它可以让你建立一个针对 MS SQL Server 的远程数据库链接,所以你可以做类似的查询

    select * from mytable@my_ms_sql_server;
    

    我只在 Oracle 9i 中针对 mysql 使用过它,发现在我们的案例中,它运行得不是很好,因为它最终消耗了大量的内存,我们仍然使用它,但现在只是使用它来同步到本地表,而不是对其进行“实时”查询。但是,它可能与 MS SQL Server 完全不同,在 10g/11g 中

    【讨论】:

      【解决方案2】:

      另一个值得关注的产品是 Oracle 网关。

      看看:

      http://www.oracle.com/technology/documentation/gateways10g.html

      【讨论】: