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

En este artículo se proporciona una solución alternativa para el problema que se produce en la herramienta Administrador de origen de datos ODBC.

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

Síntomas

Una versión de 64 bits del sistema operativo Microsoft Windows incluye las siguientes versiones de la herramienta de administrador de origen de datos ODBC (Odbcad32.exe):

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

El archivo Odbcad32.exe muestra los siguientes tipos de nombres de origen de datos (DSN):

  • DSN del sistema
  • DSN de usuario

Síntoma 1

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

Síntoma 2

La SQLDataSources función devuelve todas las versiones de los DSN de usuario, independientemente de la arquitectura de la aplicación. La SQLDataSources función a la que se llama en una aplicación de 32 bits solo devuelve los DSN del sistema para los controladores de 32 bits, pero devuelve los DSN de usuario para los controladores de 32 bits y de 64 bits. De forma similar, la SQLDataSources función a la que se llama en una aplicación de 64 bits solo devuelve los DSN del sistema para los controladores de 64 bits, pero devuelve los DSN de usuario para los controladores de 32 bits y de 64 bits. Por lo tanto, si la aplicación realiza una conexión mediante un DSN de usuario que se devuelve desde la SQLDataSources función, es posible que reciba el siguiente mensaje de error:

No se encontró el nombre de origen de datos y no se especificó ningún controlador predeterminado

Por ejemplo, considere el siguiente escenario. Se crea un DSN de usuario para el controlador de 32 de bits de Microsoft Access (*. mdb). Este controlador no tiene una versión de 64 bits correspondiente. La SQLDataSources función a la que se llama en una aplicación de 64 bits devuelve este DSN de usuario de 32 bits. Sin embargo, si realiza una conexión a través de este DSN de usuario de 32 bits, recibirá el mensaje de error mencionado anteriormente en esta sección.

Causa

Los DSN de usuario se almacenan en la siguiente subclave del registro:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

La redirección del registro no está habilitada para esta subclave del registro. Por lo tanto, los DSN de usuario están visibles en las versiones de 32 y 64 bits de la herramienta de administración de ODBC.

Solución

Para mantener la compatibilidad con versiones anteriores, actualmente no hay disponible ninguna solución para este problema.

Solución alternativa

Para solucionar este problema, use la versión adecuada de la herramienta de administración de ODBC. Si compila y, a continuación, 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 mediante la herramienta de administración de ODBC en %windir%\SysWOW64\odbcad32 . exe. Para indicar el tipo de DSN, puede Agregar ' _32 ' a los DSN de usuario de 32 bits y ' _64 ' a los DSN de usuario de 64 bits.

Más información

La herramienta de administración de ODBC de 64 bits se puede invocar desde el panel de control para administrar los DSN de usuario y los DSN de sistema que se usan en procesos de 64 bits. En un sistema operativo de 64 bits, se usa la herramienta de administrador ODBC de 32 bits para Windows en los procesos de Windows 64 (WOW64). Debe invocar directamente la herramienta Administrador de ODBC de 32 bits de la carpeta SysWoW64. Puede usar la herramienta de administración de ODBC de 32 bits para administrar los DSN de usuario y los DSN de sistema que usan los procesos de WOW64.

Los DSN del sistema se almacenan en la siguiente subclave del registro:

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

La redirección del registro está habilitada para esta subclave del registro. Por lo tanto, los DSN del sistema para controladores de 32 bits y para controladores de 64 bits se separan. La herramienta de administración de ODBC de 64 bits no muestra los DSN del sistema creados por la herramienta de administración ODBC de 32 bits. De forma similar, la herramienta de administración de ODBC de 32 bits no muestra los DSN de sistema creados por la herramienta de administrador ODBC de 64 bits. Además, la herramienta de administración de ODBC de 64 bits no muestra los DSN de sistema que usan controladores de 32 bits. De forma similar, la herramienta de administración de ODBC de 32 bits no muestra los DSN de sistema que usan controladores de 64 bits.

Los DSN de usuario se almacenan en la siguiente subclave del registro:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

La redirección del registro no está habilitada para esta subclave del registro. Por lo tanto, ambas herramientas del administrador ODBC muestran todos los DSN de usuario.

Para obtener más información acerca de la redirección del registro, consulte Registry redirector.