我有一个内联查询,其中我在 server1 中有一个 table1,在 server2 中有另一个 table2。我需要加入这两个表,并获取数据。
我可以这样做,例如连接到一台服务器,获取数据并连接到下一台服务器......获取数据。并加入他们。
但是有没有其他更好的方法。我听说过链接服务器。这对这里有帮助吗?
提前致谢 !!!
我有一个内联查询,其中我在 server1 中有一个 table1,在 server2 中有另一个 table2。我需要加入这两个表,并获取数据。
我可以这样做,例如连接到一台服务器,获取数据并连接到下一台服务器......获取数据。并加入他们。
但是有没有其他更好的方法。我听说过链接服务器。这对这里有帮助吗?
提前致谢 !!!
是的,在一台服务器上设置一个链接服务器到另一台服务器。然后你可以用一个连接做一个普通的查询。它看起来像这样:
SELECT t1.Col1
, t2.ColA
FROM server1Table t1
INNER JOIN SERVER2.dbname.dbo.tableName t2 ON t1.TheId = t2.TheId
这假设您在 Server1 上运行查询。您还可以拥有两个链接服务器并使用 [servername].[dbname].[schema].[table] 引用它们,然后在 SQL 中正常使用。
或者,您可以使用OPENROWSET(但如果您能够设置链接服务器,则最简单)。OpenRowSet 看起来像这样:
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
然后你可以加入'a',就好像它是一个本地表一样。在后台,它可能会将所有数据拉到本地数据库,因此您应该考虑将 WHERE 添加到内部查询以限制行,并且只获取您需要的列。