2016-05-19 24 views
0

Ich erbte ein SSIS-Projekt, das einige Dateien per FTP herunterlädt, sie in ein seltsames proprietäres Format entzippt und dann in ein kleines Datawarehouse einfügt. Ich muss jetzt einen Zeitstempel für jeden Datensatz hinzufügen. Ich bin ziemlich neu in SSIS - aber ich habe gesehen, dass viele Leute eine abgeleitete Spaltenaufgabe für diese Art von Sache verwenden.Wie fügt man für jede mit SSIS eingefügte Zeile einen Zeitstempel hinzu?

Bisher habe ich eine datetime2 (2) -Spalte in der Tabelle in der Datenbank hinzugefügt, eine abgeleitete Spaltenaufgabe hinzugefügt und an das Ziel in meinem Paket angehängt. Ich überprüfe das Ziel in den Mappings und stelle sicher, dass es dort erscheint und kartiert wird.

Wenn ich dieses Paket zwar ausführe, sehe ich nur NULL in der Zeitstempelspalte.

Hier ist meine abgeleitete Spalte: enter image description here

Ich bin auch nicht sicher, wenn ich Änderungen in Paketen zu machen, muss ich einfach auf „Speichern“, um sicherzustellen, dass, wenn, sagen wir, ein SQL-Auftrag läuft das Paket meine Änderungen werden ausgeführt? Es gibt keine Art von "publish"/"deploy" für SSIS-Pakete, oder? Dies ist ein bisschen eine Nebenfrage, aber möglicherweise auch verwandt ist? Ich weiß nicht ...

+0

Ich habe gerade einen Test durchgeführt, um sicher zu gehen, dass Ihr Setup gut funktionieren sollte. Überprüfen Sie, ob die Zuordnung für die neue Spalte auf Ihre abgeleitete Spalte eingestellt ist. –

Antwort

0

Meine Antwort: Tun Sie dies nicht über SSIS, wenn es ein Aufwand ist. Fügen Sie der neuen Spalte in der Zieltabelle einen Standardwert von GETDATE() hinzu. Keine Notwendigkeit, das SSIS-Paket auf diese Weise zu ändern, garantierte Daten in der Spalte jedes Mal.

0

Ich kann mir keinen Grund vorstellen abgeleitete Spalte würde nicht funktionieren. Eine Möglichkeit, dies zu testen, könnte darin bestehen, eine Skriptkomponente hinzuzufügen, die in eine andere Spalte in der Datenbank oder in eine Excel-Datei schreibt. Um zu sehen, ob es mit jedem durchlaufenden Datensatz ausgelöst wird.

Die Skriptkomponente wäre ein einfach sein: Row.ColumnName = DateTime.Now;

Dies würde mit etwas mehr Aufwand das gleiche wie die abgeleitete Spalte wenn auch tun.