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.
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.
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 ...
quelle
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.
quelle