원래 제품 버전: 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 = OpenRowsetSSIS 패키지의FastLoadOLE DB 대상을 변경합니다. 이 옵션의 단점은 각 행이 한 번에 하나씩 삽입되므로 DB2 데이터베이스에 삽입하는 성능이 훨씬 느려집니다.SSIS에서 IBM DB2 시스템에 연결하는 데 사용하는 DB2 연결 문자열 다음 매개 변수를 추가합니다.
Use Early Metadata=true