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

En este artículo se proporciona una solución alternativa al problema que se produce en la herramienta Administrador de orígenes de datos ODBC.

Versión del producto original: SQL Server
Número KB original: 942976

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 ODBC (Odbcad32.exe):

  • La versión de 32 bits del archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\System32.
  • La versión de 64 bits del archivo Odbcad32.exe se encuentra en la carpeta %systemdrive%\Windows\SysWoW64.

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 llama 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 llama 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 devuelve 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 llama en una aplicación de 64 bits devuelve este DSN del usuario de 32 bits. Sin embargo, si establece 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 compila y luego ejecuta una aplicación de 32 bits en un sistema operativo de 64 bits, debe usar la herramienta del administrador ODBC %windir%\SysWOW64\odbcad32.exe para crear el origen de datos ODBC. Para indicar el tipo de DSN, puede añadir “_32” a los DSN de los usuarios de 32 bits y “_64” a los DSN de los 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 invocar directamente la herramienta Administrador de ODBC de 32 bits 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 del 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 acerca de la redirección del Registro, consulte Redirector del Registro.