【问题标题】:Joining 2 SQL Servers加入 2 个 SQL Server
【发布时间】:2013-05-18 16:35:20
【问题描述】:

我正在尝试搜索 2 个服务器(A 和 B)。服务器 A 有数据库 PROD_A,服务器 B 有 PROD_B。 PROD_A 有 table1,PROB_B 有 table2。如何合并来自 2 个不同 SQL Server 的 2 个表?已经完成了链接服务器的设置,但我遇到了查询语法问题。谢谢。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

您需要使用 sp_addlinkedserver(记录在 here)创建链接服务器。在服务器 A 上发出命令:

sp_addlinkedserver ServerB

然后使用以下命令访问远程表:

select *
from ServerB.Prod_B.dbo.table2

这是远程表的四部分命名约定。它假定远程表位于名为“dbo”的模式中。如果不是,请将其更改为正确的架构。

如果您有权限问题,请发布另一个问题。

如果您想在一个查询中访问它们,请将表放在一个查询中

select *
from ServerB.Prod_B.dbo.table2 join
     Prod_A..table1
     on . . .

【讨论】:

  • 他的问题不是访问外部表,而是在一个查询中访问两个表。
  • 谢谢。链接服务器已添加。在服务器 A 的服务器对象的链接服务器下,但在查询期间仍未找到。你对它的查询有什么确切的语法吗?谢谢。
  • @user2397263 。 . .修改您的问题以显示您尝试运行的查询。
  • 我正在尝试获取 ServerA.PROD_A.table1 的第 1 列和 ServerB.PROD_B.table2 的第 2 列。我完成了 sp_addlinkedserver 的设置
  • @user2397263 。 . .你知道如何在没有链接服务器的情况下编写你想要的查询吗?如果不是,请提出另一个问题,省略链接的服务器部分。显示一些示例数据和您想要的结果。
【解决方案2】:

您可能需要一个 UNION 查询。

SELECT * FROM [serverA].[dbName].[table1]
UNION
SELECT * FROM [serverB].[dbName].[table2]

正如 Gordon 所说,如果是 SQL Server,您需要将每个表称为完整的四部分名称。

【讨论】:

  • 。 .由于问题中的语句“SQL Servers”,我认为它是 SQL Server。
【解决方案3】:

您正在寻找的功能是 MUltiServer 查询,我几年前使用过。 看看this的文章。

【讨论】:

  • 我正在尝试获取 ServerA.PROD_A.table1 的第 1 列和 ServerB.PROD_B.table2 的第 2 列。我完成了 sp_addlinkedserver 的设置
猜你喜欢
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 2019-08-28
  • 2019-10-05
相关资源
最近更新 更多