La herramienta Administrador de ODBC muestra los DSN del usuario de 32 bits y de 64 bits en una versión de Windows de 64 bits


Síntomas


Una versión de 64 bits del sistema operativo Microsoft Windows incluye las siguientes versiones de la herramienta Administrador de orígenes de datos de conectividad abierta de bases de datos (ODBC) (Odbcad32.exe):
  • La versión de 32 bits del archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\SysWoW64.
  • La versión de 64 bits del archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\System32.
El archivo Odbcad32.exe muestra los siguientes tipos de nombres del origen de datos (DSN):
  • DSN del sistema
  • DSN del usuario

Síntoma 1

La versión de 32 bits de la herramienta Administrador de ODBC muestra los DSN del sistema de 32 bits, los DSN del usuario de 32 bits y los DSN del usuario de 64 bits. La versión de 64 bits de la herramienta Administrador de ODBC muestra los DSN del sistema de 64 bits, los DSN del usuario de 32 bits y los DSN del usuario de 64 bits.

Síntoma 2

La función SQLDataSources devuelve todas las versiones de los DSN del usuario, independientemente de la arquitectura de la aplicación. La función SQLDataSources que se convoca en una aplicación de 32 bits devuelve solo los DSN del sistema para controladores de 32 bits, pero devuelve los DSN del usuario para controladores de 32 y de 64 bits. De forma similar, la función SQLDataSources que se convoca en una aplicación de 64 bits devuelve solo los DSN del sistema para controladores de 64 bits, pero devuelve los DSN del usuario para controladores de 32 y de 64 bits. Por lo tanto, si la aplicación hace una conexión por medio de un DSN del usuario que se convoca desde la función SQLDataSources, es posible que reciba el mensaje de error siguiente:
No se encuentra el nombre del origen de datos y no se especificó ningún controlador predeterminado
Por ejemplo, imagine la situación siguiente. Usted crea un DSN del usuario para el controlador de 32 bits “Microsoft Access Driver (*.mdb)”. El controlador no tiene una versión correspondiente de 64 bits. La función SQLDataSources que se convoca en una aplicación de 64 bits devuelve este DSN del usuario de 32 bits. Sin embargo, si hace una conexión a través de este DSN del usuario de 32 bits, recibe el mensaje de error que se menciona anteriormente en esta sección.

Causa


Los DSN del usuario se almacenan bajo la subclave de registro siguiente:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
La redirección del registro no está habilitada para esta subclave de registro. Por lo tanto, los DSN del usuario son visibles tanto en la versión de 32 bits como la versión de 64 bits de la herramienta Administrador de ODBC.

Solución


Por el momento, no hay ninguna solución disponible para solucionar el problema de mantener la compatibilidad con versiones anteriores.

Solución alternativa


Para darle una solución alternativa a este problema, use la versión adecuada de la herramienta Administrador de ODBC. Si genera y luego ejecuta una aplicación como una aplicación de 32 bits en un sistema operativo de 64 bits, debe crear el origen de datos ODBC con la herramienta Administrador de ODBC que se encuentra en %windir%\SysWOW64\odbcad32.exe. Para indicar el tipo de DSN, puede agregar “_32” a los DSN de los usuarios de 32 bits y “_64” a los DSN del usuario de 64 bits.

Más información


La herramienta Administrador de ODBC de 64 bits puede convocarse desde el Panel de control para administrar los DSN del usuario y del sistema que utilizan los procesos de 64 bits. En un sistema operativo de 64 bits, la herramienta Administrador de ODBC de 32 bits se utiliza para los procesos de Windows en Windows 64 (WOW64). Debe extraer la herramienta Administrador de ODBC de 32 bits directamente de la carpeta SysWoW64. Puede usar la herramienta Administrador de ODBC de 32 bits para administrar los DSN del usuario y los DSN del sistema que utilizan los procesos WOW64.

Los DSN del sistema se almacenan en la subclave de registro siguiente:
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
La redirección del registro está habilitada para esta subclave de registro. Por lo tanto, los DSN del sistema para controladores de 32 y de 64 bits se encuentran separados. La herramienta Administrador de ODBC de 64 bits no muestra los DSN del sistema que crea la herramienta Administrador de ODBC de 32 bits. De forma similar, la herramienta Administrador de ODBC de 32 bits no muestra los DSN del sistema que crea la herramienta Administrador de ODBC de 64 bits. Además, la herramienta Administrador de ODBC de 64 bits no muestra los DSN del sistema que utilizan controladores de 32 bits. De forma similar, la herramienta Administrador de ODBC de 32 bits no muestra los DSN del sistema que utilizan controladores de 64 bits.

Los DSN del usuario se almacenan en la subclave de registro siguiente:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
La redirección del registro no está habilitada para esta subclave de registro. Por lo tanto, ambas herramientas Administrador de ODBC muestran todos los DSN del usuario.

Para obtener más información sobre la redirección del registro, visite el siguiente sitio web de Microsoft Developer Network (MSDN):