Sql server 如何从两个不同的sql Server获取数据?
我有一个内联查询,其中server1中有一个table1,server2中有另一个table2。 我需要连接这两个表,并获取数据 我可以这样做,比如连接到一台服务器,获取数据并连接到下一台服务器…获取数据。 加入他们 但是还有其他更好的方法吗。我听说过链接服务器。这有帮助吗Sql server 如何从两个不同的sql Server获取数据?,sql-server,linked-server,fetch,Sql Server,Linked Server,Fetch,我有一个内联查询,其中server1中有一个table1,server2中有另一个table2。 我需要连接这两个表,并获取数据 我可以这样做,比如连接到一台服务器,获取数据并连接到下一台服务器…获取数据。 加入他们 但是还有其他更好的方法吗。我听说过链接服务器。这有帮助吗 提前感谢 是,在一台服务器与另一台服务器之间设置链接服务器。然后,您可以使用联接执行普通查询。它看起来像这样: SELECT t1.Col1 , t2.ColA FROM server1Table t1 INNER
提前感谢 是,在一台服务器与另一台服务器之间设置链接服务器。然后,您可以使用联接执行普通查询。它看起来像这样:
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如下所示:
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”。在引擎盖下,它可能将所有数据拖到本地数据库,因此您应该考虑将内部查询添加到何处以限制行,并且只获取所需的列。 我在不知情的情况下点击了它…这是:(还有其他方法吗..我的意思是除了链接服务器以外的其他方法。)(…我刚才确认,我们公司不能使用lniked服务器。不过,您需要对所述服务器具有一些权限。如果您没有这些权限,您可以使用具有sysadmin或setupadmin权限角色的服务器,并将这两个服务器添加为链接服务器,然后在您自己的服务器上对这两个链接服务器运行查询。请仔细查看虽然性能不错,但我可以想象它会变得毛茸茸的。添加了OPENROWSET描述。