TF610 in SSIS einschalten

7

Ich habe ein einfaches SSIS-Paket, das eine Dummy-Datei lädt, die 100000 Zeilen enthält. Jede Zeile ist ungefähr 4 KB lang, eine int-Spalte und eine lange Textspalte. Ich versuche, TF610 zu testen, wenn diese Daten in eine Tabelle mit einem Clustered-Index geladen werden.

In meinem SSIS-Paket verfügt mein Control Flow über eine Execute SQL-Task zum Aktivieren von TF610. Wechseln Sie dann bei Erfolg zu meiner Data Flow-Task, die die Flatfile in die Tabelle lädt. Sowohl das Execute SQL- als auch das OLE DB-Ziel verwenden dieselbe Verbindung.

SSIS-Paket

Wenn ich beim Ausführen des SSIS-Pakets ein Profil starte und die Befehle beobachte, wird DBCC TRACEON (610) ausgeführt, und die INSERT BULK-Operationen werden ausgelöst. Beide verwenden dieselbe PID, daher gehe ich davon aus, dass es sich um dieselbe Sitzung handelt.

Profil

Wenn ich jedoch die Länge des Protokolldatensatzes überprüfe, wird die Einfügung NICHT minimal protokolliert.

Wenn ich TF610 global aktiviere und dasselbe SSIS-Paket ausführe, obwohl die Transaktion nur minimal protokolliert wird.

Ich muss etwas falsch machen, wenn ich den TF610 in meinem SSIS-Paket einschalte, aber ich kann nicht herausfinden, was ...

Brad
quelle

Antworten:

7

Und so die gleiche Sitzung zwingen , verwendet werden soll, in der Verbindungs - Manager, unter den Einstellungen auf Eigenschaften, können Sie das Set RetainSameConnectionauf Trueeine einzige Verbindung für Ihr Paket zu zwingen , im Vergleich zu einem Pool verwenden.

Behalten Sie die gleiche Verbindung bei

billinkc
quelle
1
+1 schön. Ich kann SSIS kaum buchstabieren, daher gab es keine Hoffnung für mich, zu wissen, wie das geht. (Egal, wissen Sie, dass es so einen dummen Standard haben würde.)
Aaron Bertrand
1
@ AaronBertrand Ohne deinen Beitrag hätte ich nicht antworten können, um mich auf die Spur zu bringen. Ich kann CBDD nicht buchstabieren (siehe)
billinkc
2

Nur weil dieselbe Sitzungs-ID wiederverwendet wird, bedeutet dies nicht, dass Ihr Trace-Flag weiterhin gesetzt ist. Wenn SSIS die Verbindung getrennt und wieder verbunden hat, wird möglicherweise dieselbe SPID angezeigt, es handelt sich jedoch nicht mehr um dieselbe Sitzung. Ich kann dies einfach in SSMS reproduzieren, indem ich ein neues Abfragefenster öffne, das Trace-Flag setze, das Fenster schnell schließe und ein neues öffne (ich bekomme die gleiche Spid). Wenn ich das Flag mit überprüfe DBCC TRACESTATUD(610);, wird es nicht mehr gesetzt.

Möglicherweise müssen Sie einen Weg finden, um das Ablaufverfolgungsflag innerhalb der Datenflusstask oder global für die Dauer des Pakets festzulegen.

DBCC TRACEON(610, -1);
Aaron Bertrand
quelle