Frage

Ich schreibe ein kleines Dienstprogramm, um eine Datenbank aus einer proprietären ODBC-Datenbank in eine SQL Server-Datenbank zu kopieren.Alles funktioniert großartig, außer wenn ich SQLBULKCOPY verwende, um die Daten zu kopieren.Es funktioniert in den meisten Fällen, aber nicht, wenn es versucht, ein Zeitfeld in eine SQL-DateTime zu kopieren.Ich erhalte diesen Fehler:

Der gegebene Wert des Typs der Typ-Timespan aus der Datenquelle kann nicht in den Typ DateTime der angegebenen Zielspalte konvertiert werden.

Wenn ich das Schema in SQL Server erstellte, muss ich Datums- und Uhrzeitfelder DateTime-Typen in SQL Server vornehmen, sodass es keinen Weg gibt.Ich wollte SQLBULKCOPY verwenden, sodass ich nicht jeden Datensatz in jeder Tabelle manuell lesen musste und logische Logik um die Sonderfälle umwickeln.Bevor ich diese Straße hinunterging, gibt es noch eine Art, wie ich das tun kann?Ich habe überhaupt keine Kontrolle über das Quelldatenbankschema oder den Inhalt.

War es hilfreich?

Lösung

Ich nehme an, Sie handeln mit dem Pre-SQL Server 2008. SQL Server 2008 hat Datums- und Uhrzeitdatentypen.

Ich denke, Sie müssten ein datatables, das mit dem SQL Server-Schema übereinstimmt, und laden Sie diese aus Ihrem Quellleser, um sich von Ihrem Quellleser angemessen zu laden, indem Sie jegliche Zeit an eine Datetime ändern, indem Sie Datumsinformationen hinzufügen (z. B. 13.01.1900).Verwenden Sie dann writetoserver (datatable).Möglicherweise möchten Sie es in Chargen tun, da Sie ein paariges Speicher verwenden können, das alles in einem datatablen Lesen las.

Jeder bestimmte Grund, warum Sie SSIS nicht verwenden können?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top