2013-10-15 8 views
5

Gibt es Anwendungsfälle, in denen RetainSameConnection falsch sein sollte?RetainSameConnection - verwenden oder nicht?

Ich sehe nicht ganz, warum es standardmäßig falsch ist und frage mich, ob die Einstellung vielleicht ein Existenzrecht hat.

+0

Warum denken Sie, dass der Standard nicht gut passt? – billinkc

+2

Verbindungen sind teuer. Wenn man für die Dauer eines Pakets gepflegt werden kann, wäre es besser, als eines mit jeder Aufgabe zu öffnen und zu schließen. Ganz zu schweigen von For-Schleifen, bei denen eine Verbindung mit jeder Iteration geöffnet und geschlossen wird. Wenn es Fälle gibt, in denen Verbindungen beibehalten werden sollten, sollte dies zumindest nicht der Standardwert sein. meiner bescheidenen Meinung nach – Metaphor

Antwort

5

Wenn Sie während der Paketausführung nicht wiederholt auf eine Datenquelle treffen, lassen Sie RetainSameConnection als false, damit die Verbindung bei Beendigung der Verwendung zerstört und in den Pool zurückgegeben werden kann.

Wenn Sie wiederholt dieselbe Datenquelle verwenden, setzen Sie RetainSameConnection auf true. Sie möchten dies auch beim Festlegen einer Sitzungsvariablen (z. B. MySQL SQL_BIG_SELECTS) oder beim Erstellen einer temporären Tabelle für die Verwendung innerhalb des Pakets.

0

Zwei Gründe: 1. Verbindungen sind teuer 2. Parallelism wirksam ist Zuerst Mythos ein aus dem Weg zu bekommen: RetainSameConnection falsch verursacht NICHT die Verbindung nach jeder Aufgabe geschlossen werden. (Das trifft auch nicht zu.)

In der Standardkonfiguration öffnet SSIS so viele Verbindungen zur Datenbank, wie für die Ausgabe von Befehlen erforderlich. Beispielsweise können Sie zwei Aufgaben haben, die nicht von Präzedenzoperatoren abhängig sind und an zwei verschiedenen Tabellen in derselben Verbindung arbeiten. SSIS kann entscheiden, zwei Instanzen der Verbindung zu öffnen, um die beiden Befehle unabhängig voneinander zu verarbeiten. Ein anderes Szenario besteht darin, dass Sie möglicherweise einen einzelnen Datenfluss mit einer Quellkomponente und einer Zielkomponente haben, die auf dieselbe Verbindung abzielen. SSIS kann entscheiden, zwei Verbindungsinstanzen zu verwenden, eine für die Quelle und eine weitere für das Ziel. Wiederum - die Absicht von SSIS ist es, getrennte Verbindungen zu verwenden, um den Datendurchsatz zu verbessern.

Also - RetainSameConnection auf false gesetzt ist fast immer eine gute Sache. Es gibt normalerweise einen recht guten Grund, warum Standardeinstellungen Standardwerte sind.

Es gibt nur wenige Szenarien, in denen RetainSameConnection wahr ist: 1. Sie möchten datenbankgesteuerte Transaktionen verwenden. Wenn SSIS wählt, mehrere Verbindungen zu öffnen, um die Aufgabe (n) zu erfüllen, deckt Ihre SQL-Transaktion nicht alle ab. Das Erzwingen, dass SSIS nur eins öffnet, stellt sicher, dass Ihre Befehle alle in derselben Transaktion eingetragen sind. 2. Ihre Datenbank ist "unterbelastet" oder unter Last und Sie möchten die Auswirkungen Ihres SSIS-Pakets reduzieren. Es kann dabei helfen, SSIS auf nur eine Verbindung zu beschränken.

Verwandte Themen