2012-06-01 81 views
6

女士们和男士们 -不在SQL Server中使用链接服务器的原因?

我正在和一个曾经建议在SQL Server中使用链接服务器(Informix)的人一起工作。

他们发现(原因不明),他们有连接到SQL客户端工具和SQL Server代理SQL statments更好的运气到Informix然后直接在Informix的指向客户端工具。我的想法当然是“解决客户端问题> Informix连接问题,不要使用黑客攻击” - 但这不仅仅是重点,而且可能不会由您真正商量。

话虽这么说,什么是这种方法的在性能方面的危险?

  • 所有的查询将命中Informix的一个数据库,我们不会需要做 本地SQL表和Informix之间的异类联接。 SQL 服务器字面上的作用仅仅是代理/数据泵。
  • 大部分正在执行的查询也会做相当数量的 的分组和汇总,所以(幸运的是)我们不会在箱子之间移动吨数 。

我的问题:

任何人都可以识别场景中一个“GROUP BY”的问题在SQL Server的发射会导致个人,颗粒状行返回到SQL Server和聚集与Informix上?就我而言,这是一个启示。

还有没有其他的(坏的)性能影响,在这种情况使用链接的服务器,我应该知道的(和试图简化解决方案的方式来使用,去客户端>的Informix)?

谢谢!

回答

8

如果您是直接从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') 
+0

哦,孩子!让我说清楚。在方案1中,满足WHERE子句条件的* all *行从Informix流向SQL Server以进行聚合。在情景2中,这一切都发生在Informix上,只有“答案”数据集回来。这可能是我需要的子弹! –

+0

@RussellChristopher - 是的,这就是我所说的(虽然我不确定它是否执行informix或SQL Server上的WHERE)。无论如何,你仍然需要你的链接服务器,但是如何使用它会产生巨大的影响 – Lamak

+0

使用OPENQUERY会产生巨大的差异,欢呼声。我也有不得不链接到古老的Informix服务器(v7.23C1)的不幸。 – akiller