使用链接服务器时,MSSQL是否始终复制表

时间:2013-04-19 11:13:56

标签: sql-server linked-server

在谷歌搜索并查看链接服务器上的MS文档(http://msdn.microsoft.com/en-us/library/ms188279.aspx)后,我仍然无法得到以下问题的明确答案。我正在考虑链接2个SQL Server,这样我就可以从源数据库创建一个数据子集并将其插入到输出数据库中(插入前重复检查)但我不知道MSSQL如何处理使用链接数据库的查询。

据我所知,以下查询将导致LocalServer下载FarAwayTable,然后在本地执行查询(在我的情况下,这会导致性能下降):

SELECT 
    f.* 
FROM 
    FarAwayServer.FarAwayDB.dbo.FarAwayTable f, 
    LocalServer.LocalDb.dbo.LocalTable l
WHERE
    f.ID = l.ID

我的问题是,MSSQL会对以下查询执行相同操作,还是仅下载结果(在FarAwayServer上执行整个查询):

SELECT 
    * 
FROM 
    FarAwayServer.FarAwayDB.dbo.FarAwayTable f
WHERE
    f.ID = 1

1 个答案:

答案 0 :(得分:1)

它仍将保持相同的行为( FarAwayTable 表将被下载,查询将在本地执行)。如果要在 FarAwayServer 上执行查询,则应使用OPENQUERY

SELECT * FROM OPENQUERY([FarAwayServer], 'SELECT * FROM FarAwayDB.dbo.FarAwayTable f WHERE f.ID = 1')