programming2012. 9. 14. 14:07

DBMS 에 접속 하기 위해 ODBC 에 정보를 등록하고  SQLConnect  를 사용할 때 오류가 발생 한다면 32, 64 BIT 호환성 문제를 확인할 필요가 있다.

 

OS 가 64bit 이고 SQLConnect 를 사용하는 프로그램이 32bit 로 빌드 되었다면 이 문제가 맞다.

 

그렇지 않다면, 다른 곳에서 문제를 찾기 바란다.

 

SQLConnect 실패 후에 SQLGetDiagRec 를 통해 오류 내용을 받아보면 ERROR_CODE 는 14, SQL_STATE 는 "08001" 이 나오고 에러 메시지는 "[Microsoft][ODBC SQL Server Driver][DBNETLIB]잘못된 연결입니다." 또는 "지정된 DSN은 드라이버와 응용 프로그램 간 아키텍처 불일치를 포함합니다." 라고 출력 된다.

 

이 문제에 대한 원인은 윈도우 64bit OS 에는 ODBC 관리자가 32bit 용 64bit 용이 따로 있기 때문이다.

 

그래서 32bit 응용프로그램에서 접속을 하려면 32bit 용 ODBC 관리자를 통해 정보를 작성해야 한다.

 

64bit OS 에서 "관리 도구" -  "데이타 원본(ODBC)" 를 실행 한다면, 64bit 용 ODBC 관리자가 실행된 것이다.

 

32bit ODBC 관리자: C:\Windows\SysWOW64\odbcad32.exe

64bit ODBC 관리자: C:\Windows\System32\odbcad32.exe

 

결론적으로 32bit 로 빌드된 프로그램에서 64bit OS 의 ODBC 에 등록 하려면 "C:\Windows\SysWOW64\odbcad32.exe" 를 실행하여 ODBC 를 등록해야 한다.

 

 

Posted by 상현달