Delen via


Foutbericht bij het gebruik van SQL Server Integration Services voor het invoegen van gegevens in IBM DB2-database

Oorspronkelijke productversie: Host Integration Server
Oorspronkelijk KB-nummer: 2848234

Symptomen

Bekijk het volgende scenario:

  • U gebruikt SQL Server Integration Services (SSIS) en de OLE DB-provider voor DB2 om gegevens in te voegen in een IBM DB2-database.

  • Het OLE DB-doel in het SSIS-pakket is geconfigureerd met Accessmode = OpenRowset Using FastLoad.

  • De SQL Server-brondatabase bevat enkele NULL-waarden voor kolommen die zijn gedefinieerd als datum/tijd2 en datumgegevenstypen die worden ingevoegd in respectievelijk IBM DB2-kolommen die zijn gedefinieerd als timestamp- en datumgegevenstypen.

Tijdens het SSIS-proces voor het invoegen van gegevens in de IBM DB2-database kan er een fout optreden die vergelijkbaar is met de volgende fout:

Fout: SSIS-foutcode DTS_E_OLEDBERROR. Er is een OLE DB-fout opgetreden. Foutcode: 0x80004005. Er is een OLE DB-record beschikbaar. Bron: "Microsoft DB2 OLE DB-provider" Hresult: 0x80004005 Beschrijving: "Niet-opgegeven fout".

Er is een OLE DB-record beschikbaar. Bron: "Microsoft DB2 OLE DB-provider" Hresult: 0x80040E14 Beschrijving: "De syntaxis van de tekenreeksweergave van een datum/tijd-waarde is onjuist. SQLSTATE: 22007, SQLCODE: -180".

Oplossing

Er zijn twee manieren om het probleem op te lossen.

  • Wijzig het OLE DB-doel in het SSIS-pakket dat moet worden gebruikt AccessMode = OpenRowset om het gebruik van FastLoad. Het nadeel van deze optie is dat de prestaties van de invoegingen in de DB2-database veel langzamer zijn omdat elke rij één voor één wordt ingevoegd.

  • Voeg de volgende parameter toe aan de DB2-verbindingsreeks die door SSIS worden gebruikt om verbinding te maken met het IBM DB2-systeem:

    Use Early Metadata=true