Fehlermeldung bei Verwendung von SQL Server Integration Services zum Einfügen von Daten in die IBM DB2-Datenbank
Ursprüngliche Produktversion: Host Integration Server
Ursprüngliche KB-Nummer: 2848234
Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
Sie verwenden SQL Server Integration Services (SSIS) und den OLE DB-Anbieter für DB2, um Daten in eine IBM DB2-Datenbank einzufügen.
Das OLE DB-Ziel im SSIS-Paket ist mit
Accessmode = OpenRowset Using FastLoadkonfiguriert.Die Quelldatenbank SQL Server enthält einige NULL-Werte für Spalten, die als DateTime2- bzw. Date-Datentypen definiert sind, die in IBM DB2-Spalten eingefügt werden, die jeweils als TimeStamp- bzw. Date-Datentypen definiert sind.
Während des SSIS-Vorgangs zum Einfügen von Daten in die IBM DB2-Datenbank kann ein Fehler auftreten, der dem folgenden Fehler ähnelt:
Fehler: SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80004005. Ein OLE DB-Eintrag ist verfügbar. Quelle: "Microsoft DB2 OLE DB Provider" Hresult: 0x80004005 Description: "Unspecified error".
Ein OLE DB-Eintrag ist verfügbar. Quelle: "Microsoft DB2 OLE DB Provider" Hresult: 0x80040E14 Description: "Die Syntax der Zeichenfolgendarstellung eines Datetime-Werts ist falsch. SQLSTATE: 22007, SQLCODE: -180".
Lösung
Es gibt zwei Möglichkeiten, das Problem zu beheben.
Ändern Sie das OLE DB-Ziel im SSIS-Paket,
AccessMode = OpenRowsetum die Verwendung von zuFastLoaddeaktivieren. Der Nachteil dieser Option besteht darin, dass die Leistung der Einfügungen in die DB2-Datenbank wesentlich langsamer ist, da jede Zeile einzeln eingefügt wird.Fügen Sie der db2-Verbindungszeichenfolge, die von SSIS zum Herstellen einer Verbindung mit dem IBM DB2-System verwendet wird, den folgenden Parameter hinzu:
Use Early Metadata=true