不在SQL Server中使用链接服务器的原因?

Rus*_*her 7 sql-server sql-server-2008

女士们和男士们 -

我正在与建议在SQL Server中使用链接服务器(Informix)的人合作.

他们发现(出于未知原因)他们在连接到SQL的客户端工具上运气更好,SQL Server将SQL语句代理到Informix,然后将客户端工具直接指向Informix.我的想法,当然是"解决客户端> Informix连接问题,不要使用黑客" - 但这不仅仅是重点,而且可能无法由您真正协商.

话虽如此,这种方法在性能方面有哪些危险?

  • 所有查询都将在Informix上命中一个数据库,我们不需要在本机SQL表和Informix之间进行任何异构JOIN.SQL Server实际上只是一个代理/数据泵.
  • 正在执行的大多数查询也会进行大量的GROUPing和聚合,因此(幸运的话)我们不会在框之间移动吨和吨的行.

我的问题:

任何人都可以确定在SQL Server中触发"GROUP BY"问题会导致单个细粒度行返回到SQL Server并在那里与Informix 聚合的情况吗?就我而言,这就是天启.

在这种情况下我是否应该注意使用链接服务器是否存在其他(不良)性能影响(并尝试简化解决方案并转到客户端> Informix)?

谢谢!

Lam*_*mak 9

如果您直接从SQL Server使用链接服务器的形式:

SELECT Col1, col2, col3, SUM(col4)
FROM LinkedServer.Database.schema.Table
GROUP BY Col1, col2, col3
Run Code Online (Sandbox Code Playgroud)

然后它将在SQL Server上执行聚合.但是,如果您使用OPENQUERYOPENROWSET,它将在链接服务器上执行查询,然后将数据检索到SQL Server:

SELECT *
FROM OPENQUERY(LinkedServer, '
SELECT Col1, col2, col3, SUM(col4)
FROM Database.schema.Table
GROUP BY Col1, col2, col3')
Run Code Online (Sandbox Code Playgroud)