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

时间:2012-06-01 19:52:58

标签: sql-server sql-server-2008

女士们和男士们 -

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

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

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

  • 所有查询都将在Informix上命中一个数据库,我们不需要这样做 本机SQL表和Informix之间的任何异构JOIN。 SQL 服务器实际上只是代理/数据泵。
  • 正在执行的大多数查询也会做相当多的查询 分组和聚合,所以(幸运的话)我们不会移动吨 盒子之间的行数很多。

我的问题:

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

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

谢谢!

1 个答案:

答案 0 :(得分:9)

如果您直接从SQL Server使用链接服务器,请使用以下形式:

SELECT Col1, col2, col3, SUM(col4)
FROM LinkedServer.Database.schema.Table
GROUP BY Col1, col2, col3

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

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