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 를 등록해야 한다.
'programming' 카테고리의 다른 글
힙이 손상 되는 오류 노가다로 찾아 내기 (0) | 2014.01.28 |
---|---|
GetLastError 함수 코드와 한글 메시지 (0) | 2013.08.26 |
stack overflow 되면 mini dump 0kb 인 문제 해결 방법 (0) | 2012.04.16 |
SQL 데이타 타입에 매칭 되는 C++ 변수 타입 (0) | 2012.02.01 |
템플릿 특화(Template specialize)를 이용한 BOOST_STATIC_ASSERT (0) | 2010.12.08 |