Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何从两个不同的sql Server获取数据?_Sql Server_Linked Server_Fetch - Fatal编程技术网

Sql server 如何从两个不同的sql Server获取数据?

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

我有一个内联查询,其中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如下所示:

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描述。