1

Ich bin neu bei der Verwendung von SSIS 2008 und arbeite derzeit an der Migration von Daten aus einer alten Advantage-Datenbank auf SQL Server 2005. Ich eingerichtet das SSIS-Paket mit einem Datenflussobjekt mit einer Quelle und einem Ziel . Das Kopieren der meisten Spalten funktioniert großartig, aber wenn ich versuche, die Advantage Timestamp-Spalten in ein DateTime-Feld zu kopieren, erhalte ich viele Fehler. Ich glaube, das sind alles Überlauffehler, was verständlich ist, wenn Advantage die Timestamp-Informationen speichert. Meine Frage ist, was ist der beste Weg, um diese Spalte in das richtige DATETIME-Feld in SQL Server 2005 zu konvertieren?SSIS Advantage Zeitstempel zu SQL Datetime

Ich dachte, ich könnte die Advantage TimeStamp-Spalte in eine varchar-Spalte kopieren und dann ein sql-Skript ausführen, das die Konvertierung für mich übernimmt. Ich habe mich gefragt, ob es einen eleganteren Weg gibt oder was eine normale Lösung für diese Art von Problem ist.

Vielen Dank für Ihre Hilfe und Anregungen!

Antwort

2

In Ihrem Datenfluss können Sie mit einer Transformation für abgeleitete Spalten versuchen, den Advantage-Zeitstempel in einen SQL Server DATETIME-Datentyp (DT_DBTIMESTAMP) zu konvertieren (beachten Sie, dass dies nicht der Datentyp SQL Server TIMESTAMP ist.) In der Spalte Abgeleitete Transformation fügen Sie eine neue Spalte hinzu und geben Sie den folgenden Ausdruck ein, um den Datentyp zu konvertieren.

(DT_DBTIMESTAMP) [MyDate] 

Wenn dies nicht gelingt, dann können Sie den Typ in eine Zeichenfolge tun, (DT_STR, <>, <>), dann manipulieren, um die Zeichenfolge String-Funktionen und anschließend in den einzelnen Ausdruck auf den DT_DBTIMESTAMP werfen Typ .

(DT_DBTIMESTAMP) (...string functions...(DT_STR, 20, 1252)[MyDate]) 
0

Timestamp ist ein Datentyp und hat nichts mit Datum oder Zeitdaten zu tun.