2013-10-15 12 views
5

Eventuali casi di utilizzo in cui RetainSameConnection dovrebbe essere falso?RetainSameConnection - utilizzare o no?

Non vedo perché è falso di default e mi chiedo se forse l'impostazione ha il diritto di esistere.

+0

Perché pensi che il valore predefinito non sia una buona idea? – billinkc

+2

Le connessioni sono costose. Se uno può essere mantenuto per la durata di un pacchetto, sarebbe meglio che aprirlo e chiuderne uno con ogni attività. Per non parlare dei loop For, in cui una connessione viene aperta e chiusa a ogni iterazione. Se ci sono casi in cui le connessioni dovrebbero essere mantenute, per lo meno non dovrebbe essere l'impostazione predefinita. A parer mio – Metaphor

risposta

5

Se non si colpisce ripetutamente un'origine dati durante l'esecuzione del pacchetto, lasciare RetainSameConnection come falso in modo che la connessione possa essere distrutta e restituita al pool al termine dell'utilizzo.

Mentre si sta ripetutamente colpendo la stessa origine dati, impostare RetainSameConnection su true. Lo si vorrebbe anche impostando una variabile di sessione (come MySQL SQL_BIG_SELECTS) o creando una tabella temporanea da utilizzare all'interno del pacchetto.

0

due motivi: 1. connessioni sono costosi 2. Il parallelismo è efficace In primo luogo, un mito per ottenere fuori strada: RetainSameConnection falso NON provoca la connessione per ottenere chiusa dopo ogni compito. (Né è vero)

In configurazione predefinita, SSIS aprirà il numero di connessioni al database che ritiene necessarie per l'emissione di comandi. Ad esempio, potresti avere due compiti non vincolati da operatori di precedenza, che operano su due diverse tabelle sulla stessa connessione. SSIS può decidere di aprire due istanze della connessione per elaborare i due comandi in modo indipendente. Un altro scenario è che si può avere un singolo flusso di dati con un componente di origine e un componente di destinazione che ha come target la stessa connessione. SSIS può decidere di utilizzare due istanze di connessione, una per l'origine e un'altra per la destinazione. Ancora: l'intento di SSIS è di utilizzare connessioni separate per migliorare il throughput dei dati.

Quindi - RetainSameConnection impostato su false è quasi sempre una BUONA COSA. Di solito c'è una buona ragione per cui le impostazioni predefinite sono predefinite.

Ci sono pochissimi scenari per RetainSameConnection per essere vero: 1. Si desidera utilizzare le transazioni controllate da database. Se SSIS sceglie di aprire più connessioni per eseguire le attività, la transazione SQL non le coprirà tutte. Forzare SSIS ad aprirne solo uno assicura che i tuoi comandi siano tutti inseriti nella stessa transazione. 2. Il database è "underpowered" o sotto carico e si desidera ridurre l'impatto del pacchetto SSIS. Limitare SSIS a una sola connessione ad esso può essere d'aiuto.