Ich versuche herauszufinden, wie ich das folgende Szenario am besten angehen kann.SSIS-Datenflussaktualisierung
Übersicht
Zahlungen werden im Laufe des Tages gesammelt und in einer Tabelle (SQL Server) gespeichert. Am Ende eines jeden Tages sollen diese Zahlungen exportiert und in eine andere Datenbank (Oracle) eingefügt werden. Die Zahlungen, die erfolgreich in die Oracle-Datenbank eingefügt wurden, müssen mit einem Zeitstempel aktualisiert werden.
Prozess
Schritt 1 - Jeder Zahlungsverhalten hat gegen die Oracle-Datenbank abgeglichen werden, um sicherzustellen, dass ein Wert, auf den sich die Zahlung Datensatz in der Datenbank Oracle existiert. Zahlungen, die diesen Schritt erfüllen, bewegen sich in der Pipeline.
Schritt 2 - Zahlungen werden in die Oracle-Datenbank eingefügt, wobei alle Einfügefehler zu einem Recordset umgeleitet werden.
Ansatz
ich für die Zahlungen (SQL Server) und für die Nachschlagewerte (Oracle) eine OLEDB-Datenquelle verwende und dann ein Merge (links außen) Machen Sie mit Hilfe der Daten an die Zahlungen anhängen . Mit einer bedingten Aufspaltung aus den Ergebnissen der Zusammenführungsverbindung übergebe ich die Zahlungen, die mit den Suchdaten übereinstimmten, an das OLEDB-Ziel.
Ich muss die ursprüngliche Zahlungstabelle mit nur den Zahlungen aktualisieren, die es bis zum Einsatz gemacht haben. Mit dem bedingten Split kann ich ermitteln, welche Zeilen in Schritt 1 nicht abgeglichen wurden, und umleiten von Zeilen auf der Fehlerausgabe beim letzten Einfügen kann ich bestimmen, welche Zeilen dort fehlgeschlagen sind. Ich sehe jedoch nicht den besten Weg, um die Zahlungen zu bestimmen, die erfolgreich eingefügt wurden, und die beste Möglichkeit, die ursprüngliche Tabelle zu aktualisieren.
Yup. Set-based Ansatz ist der Weg zu gehen. Ich frage mich, ob Sie die fehlerhaften Einfügungen mit dem anderen Multicast-Fluss verbinden und die Fehler entfernen könnten, so dass sie nie in die temporäre Tabelle eingefügt werden. –