Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 vanFastLoad
. 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