2007~2011/SQL Server2009. 4. 22. 00:01

Microsoft OLE DB Provider for DB2 를 사용하여 SQL Server 에서 DB2를 대상으로 OPENROWSET 쿼리를 수행하는 과정에 대해서 아래와 같이 정리하였습니다. 연결 스트링 참조를 목적으로 블로그에 남겨 놓습니다. ^^;
 

[환경]
Windows Server 2003 SP1 / SQL Server 2005 SP2
IBM AIX 5.3 / DB2 9.1.0.6


[진행 절차]
1. Microsoft OLE DB Provider for DB2 Version 2.0 다운로드
2. Provider 설치

Microsoft OLE DB Provider for DB2 Version 2.0




정상적으로 설치가 되었다면 공급자 목록에서 DB2OLEDB 를 확인하실 수 있습니다.



3. 시작 - 프로그램 - Microsoft OLE DB Provider for DB2 - Data Access Tool 실행 후 커넥션 스트링 정보 입력
4. Connect 연결 테스트 진행 - 연결되어 정상적으로 버전 정보가 확인됩니다.




5. SQL Server Management Studio 에서 아래 쿼리를 수행합니다.

SELECT * FROM OPENROWSET (
'DB2OLEDB','Provider=DB2OLEDB;Network Transport Library=TCPIP;Network Address=192.168.0.100;Network Port=50000;Initial Catalog=lagodb;Package Collection=yyy;Default Schema=yyy;User ID=laigo;Password=P@ssw0rd;','select current_timestamp from sysibm.SYSDUMMY1 with ur')


수행 결과

1
-----------------------
2009-04-21 15:40:47.777

(1개 행 적용됨)


추가적으로 SQL Server 2000 에서 Microsoft OLE DB Provider for DB2 를 사용하기 위해서는 경험상(?) Host Integration Server 2004 SP1 이상 버전을 사용하실 것을 권장해 봅니다. 특히 아래와 같은 오류를 경험하셨다면.... !! 더욱....
관련된 내용은 정리하지 않습니다. 검색하시면 KB 문서 몇 건을 찾을 수 있습니다. 


서버: 메시지 7347, 수준 16, 상태 1, 줄 1

OLE DB 공급자 'DB2OLEDB'이(가) 고정 길이 열 '(user generated expression).Expr1002'에 대해 예기치 않은 데이터 길이를 반환했습니다. 예상 데이터 길이는 1인데 반환된 데이터 길이는 0입니다.

OLE DB 오류 추적 [Non-interface error:  Unexpected data length returned for the column:  ProviderName='DB2OLEDB', TableName='(user generated expression)', ColumnName='Expr1002', ExpectedLength='1', ReturnedLength='0'].




[참고자료]
Connection strings for IBM DB2
http://www.connectionstrings.com/ibm-db2

Microsoft Host Integration Server
http://www.microsoft.com/hiserver/default.mspx

OLE DB Provider for DB2
http://msdn.microsoft.com/ko-kr/library/ms178027(SQL.90).aspx


작성자 : Lai Go / 작성일자 : 2009.04.22

Posted by Lai Go