2012-06-01 11 views
6

Signore e signori -Motivi per NON utilizzare server collegati in SQL Server?

Sto lavorando con qualcuno che ha proposto di utilizzare un server collegato con (Informix) in SQL Server.

Hanno trovato (per ragioni sconosciute) che hanno più fortuna con strumenti client si connettono a SQL e SQL statments proxy di SQL Server per Informix poi indicare gli strumenti client direttamente a Informix. Il mio pensiero, naturalmente, è "Risolvi il client> problema di connettività Informix, non usare un hack" - ma questo è oltre il punto e probabilmente non negoziabile dal sottoscritto.

Detto questo, quali sono i pericoli di questo approccio in termini di prestazioni?

  • tutte le query colpirà un singolo db su Informix, e non avranno bisogno di fare qualsiasi Join eterogenei tra tabelle SQL nativi e Informix. SQL Il server funziona letteralmente come nient'altro che un proxy/pompa di dati.
  • Anche la maggior parte delle query eseguite eseguirà un importo equo di GROUPing e aggregazione, quindi (con fortuna) non sposteremo tonnellate di e tonnellate di righe tra le caselle.

La mia domanda:

Qualcuno può individuare scenari in cui un "GROUP BY" questione sparato a SQL Server potrebbe causare l'individuo, le righe granulari da restituire a SQL Server e aggregati ci vs. su Informix ? Questa è l'apocalisse per quanto mi riguarda.

Ci sono altre (cattive) implicazioni sulle prestazioni che utilizzano un server collegato in questo tipo di situazione di cui dovrei essere a conoscenza (e utilizzare come metodo per tentare di semplificare la soluzione e passare al client> Informix)?

Grazie!

risposta

8

Se si utilizza il server collegato su una query direttamente da SQL Server la forma di:

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

Poi sarà eseguire le aggregazioni in SQL Server. Ma se si utilizza OPENQUERY o OPENROWSET, allora eseguirà la query sul server collegato e quindi recuperare i dati a SQL Server:

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

Oh boy! Fatemi capire bene. Nello scenario 1, * tutte le * righe che soddisfano i criteri della clausola WHERE passano a SQL Server da Informix per essere aggregate. Nello scenario 2, tutto accade su Informix e viene restituito solo il set di dati "risposta". Potrebbe essere il proiettile di cui ho bisogno! –

+0

@RussellChristopher - Sì, questo è quello che sto dicendo (anche se non sono sicuro che funzioni su "WHERE" su informix o SQL Server). In ogni caso, hai ancora bisogno del tuo server collegato, ma il modo in cui lo usi fa una grande differenza – Lamak

+0

Usando OPENQUERY fa una grande differenza, applausi. Anch'io ho la sfortuna di dover collegare a un server Informix antico (v7.23C1). – akiller