2012-06-01 15 views
6

Damas y caballeros -Razones para no usar servidores enlazados en SQL Server?

Estoy trabajando con alguien que ha propuesto usar un servidor vinculado contra (Informix) en SQL Server.

Han encontrado (por razones desconocidas) que tienen mejor suerte con las herramientas del cliente que se conectan a SQL, y SQL Server proxying las sentencias de SQL a Informix y luego apuntan las herramientas del cliente directamente a Informix. Mi idea, por supuesto, es "Resolver el problema de conectividad de Informix Client>, no use un hack", pero eso es además del punto y probablemente no negociable por los tuyos.

Dicho esto, ¿cuáles son los peligros de este enfoque en términos de rendimiento?

  • TODAS las consultas llegarán a un solo db en Informix, y no vamos a tener que hacer ningún Combinaciones heterogéneas entre tablas SQL nativas y Informix. SQL El servidor está actuando literalmente como nada más que una bomba de proxy/datos.
  • La mayoría de las consultas que se están ejecutando también estarán haciendo una buena cantidad de Agrupación y agregación, por lo que (con suerte) no vamos a mover toneladas y toneladas de filas entre cajas.

Mi pregunta:

¿Alguien puede identificar escenarios donde un "GROUP BY" cuestión disparado a SQL Server podría causar un individuo, granulares filas a devolver a SQL Server y agregada no vs. en Informix ? Ese es el apocalipsis en lo que a mí respecta.

¿Hay otras (malas) implicaciones de rendimiento que usar un servidor vinculado en este tipo de situación de las que debería tener conocimiento (y utilizar como una forma de intentar simplificar la solución e ir al cliente> Informix)?

Gracias!

Respuesta

8

Si utiliza el servidor vinculado en una consulta directamente de SQL Server en la forma de:

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

A continuación, se llevará a cabo las agregaciones en SQL Server. Pero si se utiliza o OPENQUERYOPENROWSET, a continuación, se llevará a cabo la consulta en el servidor vinculado y luego recuperar los datos a SQL Server:

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

Oh, muchacho! Déjame entenderlo. En el escenario 1, * todas las filas que cumplan los criterios de la cláusula WHERE que fluyen a SQL Server desde Informix se agregarán. En el Escenario 2, todo sucede en Informix, y solo el conjunto de datos de "respuesta" regresa. ¡Esa podría ser la bala que necesito! –

+0

@RussellChristopher - Sí, eso es lo que estoy diciendo (aunque no estoy muy seguro si realiza el 'WHERE' en informix o SQL Server). En cualquier caso, aún necesita su servidor vinculado, pero cómo lo usa hace una gran diferencia – Lamak

+0

Usar OPENQUERY hace una gran diferencia, ¡aplausos! También tengo la mala suerte de tener que enlazar con un antiguo servidor Informix (v7.23C1). – akiller

Cuestiones relacionadas