0

在谷歌搜索并查看链接服务器上的 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
4

1 回答 1

1

它的行为仍然相同(将下载FarAwayTable表并在本地执行查询)。如果你想在FarAwayServer上执行查询,你应该使用OPENQUERY

SELECT * FROM OPENQUERY([FarAwayServer], 'SELECT * FROM FarAwayDB.dbo.FarAwayTable f WHERE f.ID = 1')
于 2013-04-19T11:22:15.980 回答