ODBC 관리자 도구는 64비트 버전의 Windows 32비트 및 64비트 사용자 DSN를 모두 표시합니다.

이 문서에서는 ODBC 데이터 원본 관리자 도구에서 발생하는 문제에 대한 해결 방법을 제공합니다.

원래 제품 버전: SQL Server
원본 KB 번호: 942976

증상

Microsoft Windows 운영 체제의 64비트 버전에는 다음과 같은 버전의 ODBC 데이터 원본 관리자 도구(Odbcad32.exe)가 포함되어 있습니다.

  • Odbcad32.exe 파일의 32비트 버전은 폴더에 %systemdrive%\Windows\System32 있습니다.
  • Odbcad32.exe 파일의 64비트 버전은 폴더에 %systemdrive%\Windows\SysWoW64 있습니다.

Odbcad32.exe 파일에는 다음과 같은 유형의 DSN(데이터 원본 이름)이 표시됩니다.

  • 시스템 DSN
  • 사용자 DSN

증상 1

ODBC 관리자 도구의 32비트 버전에는 32비트 시스템 DSN, 32비트 사용자 DSN 및 64비트 사용자 DSN이 표시됩니다. ODBC 관리자 도구의 64비트 버전에는 64비트 시스템 DSN, 32비트 사용자 DSN 및 64비트 사용자 DSN이 표시됩니다.

증상 2

SQLDataSources 함수는 애플리케이션의 아키텍처에 관계없이 모든 버전의 사용자 DSN을 반환합니다. 32비트 애플리케이션에서 호출되는 SQLDataSources 함수는 32비트 드라이버에 대한 시스템 DSN만 반환하지만 32비트 드라이버와 64비트 드라이버 모두에 대한 사용자 DSN을 반환합니다. 마찬가지로, 64비트 애플리케이션에서 호출되는 SQLDataSources 함수는 64비트 드라이버에 대한 시스템 DSN만 반환하지만 32비트 드라이버와 64비트 드라이버 모두에 대한 사용자 DSN을 반환합니다. 따라서 애플리케이션이 SQLDataSources 함수에서 반환된 사용자 DSN을 사용하여 연결을 만드는 경우 다음 오류 메시지가 표시될 수 있습니다.

데이터 원본 이름을 찾을 수 없고 기본 드라이버가 지정되지 않음

예를 들어 다음과 같은 경우를 생각해볼 수 있습니다. 32비트 드라이버 'Microsoft Access Driver(*.mdb)'에 대한 사용자 DSN을 만듭니다. 이 드라이버에는 해당 64비트 버전이 없습니다. 64비트 애플리케이션에서 호출되는 SQLDataSources 함수는 이 32비트 사용자 DSN을 반환합니다. 그러나 이 32비트 사용자 DSN을 통해 연결하는 경우 이 섹션의 앞 부분에서 언급한 오류 메시지가 표시됩니다.

원인

사용자 DSN은 다음 레지스트리 하위 키 아래에 저장됩니다.

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

레지스트리 리디렉션은 이 레지스트리 하위 키에 대해 사용하도록 설정되지 않습니다. 따라서 사용자 DSN은 32비트 및 64비트 버전의 ODBC 관리자 도구에 모두 표시됩니다.

해결 방법

이전 버전과의 호환성을 유지하려면 현재 이 문제에 대한 해결 방법을 사용할 수 없습니다.

해결 방법

이 문제를 해결하려면 적절한 버전의 ODBC 관리자 도구를 사용합니다. 64비트 운영 체제에서 애플리케이션을 빌드하고 32비트 애플리케이션으로 실행하는 경우 ODBC 관리자 도구를 사용하여 %windir%\SysWOW64\odbcad32.exe ODBC 데이터 원본을 만들어야 합니다. DSN 유형을 나타내려면 32비트 사용자 DSN에 '_32'를 추가하고 64비트 사용자 DSN에 '_64'를 추가할 수 있습니다.

추가 정보

64비트 ODBC 관리자 도구를 제어판에서 호출하여 64비트 프로세스에서 사용하는 사용자 DSN 및 시스템 DSN을 관리할 수 있습니다. 64비트 운영 체제에서 32비트 ODBC 관리자 도구는 Windows on Windows 64(WOW64) 프로세스에 사용됩니다. SysWoW64 폴더에서 32비트 ODBC 관리자 도구를 직접 호출해야 합니다. 32비트 ODBC 관리자 도구를 사용하여 WOW64 프로세스에서 사용하는 사용자 DSN 및 시스템 DSN을 관리할 수 있습니다.

시스템 DSN은 다음 레지스트리 하위 키에 저장됩니다.

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

레지스트리 리디렉션은 이 레지스트리 하위 키에 사용하도록 설정됩니다. 따라서 32비트 드라이버 및 64비트 드라이버에 대한 시스템 DSN은 분리됩니다. 64비트 ODBC 관리자 도구는 32비트 ODBC 관리자 도구에서 만든 시스템 DSN을 표시하지 않습니다. 마찬가지로 32비트 ODBC 관리자 도구는 64비트 ODBC 관리자 도구에서 만든 시스템 DSN을 표시하지 않습니다. 또한 64비트 ODBC 관리자 도구에는 32비트 드라이버를 사용하는 시스템 DSN이 표시되지 않습니다. 마찬가지로 32비트 ODBC 관리자 도구에는 64비트 드라이버를 사용하는 시스템 DSN이 표시되지 않습니다.

사용자 DSN은 다음 레지스트리 하위 키에 저장됩니다.

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

레지스트리 리디렉션은 이 레지스트리 하위 키에 대해 사용하도록 설정되지 않습니다. 따라서 두 개의 ODBC 관리자 도구 모두 사용자 DSN 전체를 표시합니다.

레지스트리 리디렉션에 대한 자세한 내용은 레지스트리 리디렉션을 참조합니다.