SQL Server Integration Services를 사용하여 IBM DB2 데이터베이스에 데이터를 삽입할 때 오류 메시지

원래 제품 버전: Host Integration Server
원래 KB 번호: 2848234

증상

다음 시나리오를 고려하세요.

  • SSIS(SQL Server Integration Services) 및 OLE DB Provider for DB2를 사용하여 IBM DB2 데이터베이스에 데이터를 삽입합니다.

  • SSIS 패키지의 OLE DB 대상은 .로 Accessmode = OpenRowset Using FastLoad구성됩니다.

  • 원본 SQL Server 데이터베이스에는 각각 TimeStamp 및 Date 데이터 형식으로 정의된 IBM DB2 열에 삽입될 DateTime2 및 Date 데이터 형식으로 정의된 열에 대한 일부 NULL 값이 포함됩니다.

IBM DB2 데이터베이스에 데이터를 삽입하는 SSIS 프로세스 중에 다음과 유사한 오류가 발생할 수 있습니다.

오류: SSIS 오류 코드 DTS_E_OLEDBERROR. OLE DB 오류가 발생했습니다. 오류 코드: 0x80004005. "OLE DB 레코드를 사용할 수 있습니다. 원본: "Microsoft DB2 OLE DB 공급자" Hresult: 0x80004005 설명: "지정되지 않은 오류".

"OLE DB 레코드를 사용할 수 있습니다. 원본: "Microsoft DB2 OLE DB 공급자" Hresult: 0x80040E14 설명: "datetime 값의 문자열 표현 구문이 잘못되었습니다. SQLSTATE: 22007, SQLCODE: -180".

해결

문제를 해결하는 방법에는 두 가지가 있습니다.

  • 사용을 사용하지 않도록 설정하는 데 사용할 AccessMode = OpenRowset SSIS 패키지의 FastLoadOLE DB 대상을 변경합니다. 이 옵션의 단점은 각 행이 한 번에 하나씩 삽입되므로 DB2 데이터베이스에 삽입하는 성능이 훨씬 느려집니다.

  • SSIS에서 IBM DB2 시스템에 연결하는 데 사용하는 DB2 연결 문자열 다음 매개 변수를 추가합니다.

    Use Early Metadata=true