2010-12-02 21 views
2

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.

Antwort

1

Ich würde wahrscheinlich eine Liste von IDs für erfolgreiche Zahlung Datensätze in eine temporäre Tabelle in der ursprünglichen db einfügen (mit einem Multicast + OLE DB Destination) und führen Sie eine gespeicherte Prozedur oder eine SQL-Abfrage-Task zum Aktualisieren der ursprünglichen Tabelle basierend auf den Werten in der Temp-Tabelle. Dann können Sie die temporäre Tabelle abschneiden oder ablegen, wenn Sie fertig sind.

+0

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