【问题标题】:SQL Cross Server Joins [closed]SQL跨服务器连接[关闭]
【发布时间】:2018-05-29 19:17:45
【问题描述】:

是否可以进行跨服务器连接(如果数据库位于不同的服务器上,例如 SQL Server 和 Oracle)?如果是,哪个数据库服务器允许跨数据库连接?

是否可以在 SQL ServerOracle 中进行跨服务器连接?我们可以加入 Oracle 数据库和 SQL Server 数据库吗?如何做呢?

【问题讨论】:

  • 我不能代表 Oracle,但从 SQL Server,是的,您可以使用链接服务器查询其他服务器。但是请注意,跨服务器查询并不是表现最好的。
  • 也许您可以使用两个不同的连接进行连接,并使用第 3 方语言(即 python、php 等)解释数据库
  • 更好的方法可能是使用从源服务器获取数据并将它们插入目标服务器的实用程序
  • 我投票结束这个过于宽泛,但 Lamu 对作为链接服务器 (blogs.msdn.microsoft.com/psssql/2015/07/31/…) 的即席查询有正确的答案。
  • 另外,请注意,您在这里要求做的不是“跨数据库”查询。一个服务器将托管许多数据库,在同一个查询中查询其中的 2 个是一项微不足道的任务(即在 SQL Server SELECT * FROM DB1.dbo.Table1 T1 JOIN DB2.dbo.Table2 T2 ON T1.ID = T2.ID 中)。您要问的是跨服务器查询。

标签: sql sql-server oracle join


【解决方案1】:

显然你可以,

STackover post

是的——Oracle 和 SQL Server 都支持链接服务器概念。 这允许您使用 4 部分名称引用其他服务器。为了 示例:

select * from LocalDb.Schema.Table 交叉连接 OracleLinkedServer.RemoteDb.RemoteSchema.RemoteTable

作为旁注,我搜索了cross-database Joins in SQL Server or Oracle,第一个结果是重复的堆栈溢出帖子。请在发帖前尝试自己回答问题

【讨论】:

    【解决方案2】:

    您可以在同一服务器或 MS SQL Server 中的不同服务器上连接不同数据库上的多个表。

    如果两个数据库在同一台服务器上,您可以像这样加入

    SELECT
    *
    FROM [Database1].[Schema].[TableA] A
    JOIN [Database2].[Schema].[TableB] B
    ON A.Key = B.Key
    

    如果它们位于不同服务器或同一服务器计算机上的不同 SQL 实例上,您可以使用链接服务器或桥接查询 (OPENDATASOURCE)。

    要使用链接服务器,首先需要添加链接服务器连接

    请参阅此Article 了解如何添加链接服务器。

    一旦你配置了链接服务器,你就可以像这样查询表

    SELECT
    *
    FROM [ServerName1].[Database1].[Schema].[TableA] A
    JOIN [ServerName2].[Database2].[Schema].[TableB] B
    ON A.Key = B.Key
    

    或者你可以使用开放数据源

    SELECT
        * FROM TableA A
    JOIN OPENDATASOURCE (
       'SQLNCLI', -- or SQLNCLI
       'Data Source=OtherServer\InstanceName;Catalog=RemoteDB;User ID=SQLLogin;Password=Secret;').RemoteDB.dbo.SomeTable B
    ON A.KEY = B.KEY
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2013-10-21
      • 2018-12-09
      相关资源
      最近更新 更多