2009-05-28 6 views
0

Ich frage mich, wie SSIS Transaktionen mit großen Datenmengen behandelt. Ich habe einen "großen" Datensatz von etwa 150.000 Zeilen, von denen jede im Rahmen einer ETL von einer Staging-Datenbank zur Live-Datenbank gegen Geschäftsregeln validiert werden muss.SSIS-Transaktionen - große Datensätze

Wenn einer der Datensätze seine Geschäftsregeln nicht erfüllt, sollten keine Datensätze in der Live-Datenbank enden (d. H. Rollback der Transaktion).

Meine Frage ist, wie SSIS große Transaktionen behandelt - oder kann es? Wird es die Eingabe von 149.999 Datensätzen behandeln und dann die gesamte Menge zurückrollen, wenn der letzte Datensatz seine Regeln nicht erfüllt? Oder gibt es eine bessere Best Practice für die Durchführung dieser Art von großen Datenübertragungsvorgang?

Mein derzeitiger Gedanke ist, jeden Datensatz innerhalb eines Sequenzcontainers auf der Ebene des Kontrollflusses zu verarbeiten, wobei die Transkationseinstellungen für den Container aktiviert sind. Alle Validierungen werden innerhalb des Sequenzcontainers durchgeführt, und die Einfügung erfolgt ebenfalls in diesem Container.

Antwort

2

SSIS kann Transaktionen relativ gut verarbeiten. Wo es hinfällt, sind Transaktionen gegen mehrere DBs oder Server mit MSDTC (funktioniert immer noch, aber es gibt einige Vorbehalte).

Sie können TransactionOption für die Datenflusstask als erforderlich festlegen. Dadurch wird SSIS gezwungen, es in eine Transaktion einzutragen. Ebenso können Sie die TransactionOption anderer Tasks als NotSupported setzen (z. B. wenn die Statustabelle fehlschlägt, falls sie fehlschlägt).

Sie können nicht wirklich jeden Datensatz innerhalb eines Sequenzcontainers verarbeiten (es sei denn, Sie durchlaufen einen Datenflusstask mehrere Male, was wahrscheinlich nicht der beste Weg ist). Stattdessen würde ich den Datenfluss zu Transaktionsoption erforderlich machen, und dann sollte die Aufgabe fehlschlagen, wenn Datensätze in Ihrem Datenfluss fehlschlagen und die gesamte Transaktion zurücksetzen.

0

Ich stimme Dane, SSIS und SQL-Server sollte keine Probleme mit dieser Menge von Transaktionen haben vorausgesetzt, es gibt entsprechende Infrastruktur, um dies zu unterstützen.