如何从两个不同的SQL服务器获取数据?

Rel*_*ity 3 sql-server linked-server fetch

我有一个内联查询,其中我在server1中有一个table1,在server2中有另一个table2.我需要加入这两个表,并获取数据.

我可以这样做,比如连接到一台服务器,获取数据并连接到下一台服务器......获取数据.并加入他们.

但还有其他更好的方法.我听说过Linked服务器.这会有帮助吗?

提前致谢 !!!

Ror*_*ory 5

是的,在一台服务器上将链接服务器设置为另一台服务器.然后你可以用连接做一个普通的查询.它看起来像这样:

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN SERVER2.dbname.dbo.tableName t2 ON t1.TheId = t2.TheId
Run Code Online (Sandbox Code Playgroud)

假设您在Server1上运行查询.您还可以使用[servername].[dbname].[schema].[table],然后在SQL中正常使用两个链接服务器并引用它们.

或者,您可以使用OPENROWSET(但如果您能够设置它,则链接服务器最简单).OpenRowSets看起来像这样:

SELECT t1.Col1
    ,  t2.ColA
FROM server1Table t1
INNER JOIN  OPENROWSET('SQLNCLI', 'Server=Server2;Trusted_Connection=yes;',
                       'SELECT t2.ColA, t2.TheId FROM dbname.dbo.tableName') AS t2
  ON t1.TheId = t2.TheId
Run Code Online (Sandbox Code Playgroud)

然后你就可以加入'a',好像它是一个本地表.在引擎盖下,它可能会将所有数据都下载到本地数据库,因此您应该考虑将WHERE添加到内部查询以限制行,并且只获取所需的列.