在谷歌搜索并查看链接服务器上的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
答案 0 :(得分:1)
它仍将保持相同的行为( FarAwayTable 表将被下载,查询将在本地执行)。如果要在 FarAwayServer 上执行查询,则应使用OPENQUERY:
SELECT * FROM OPENQUERY([FarAwayServer], 'SELECT * FROM FarAwayDB.dbo.FarAwayTable f WHERE f.ID = 1')