¿Cómo uso un controlador ODBC de 32 bits en Server 2008 de 64 bits cuando el instalador no crea un DSN estándar?

StackOverflow https://stackoverflow.com/questions/1134827

Pregunta

Tuve un problema con el software de terceros que utilizamos para rastrear el uso de licencias de software en nuestros laboratorios de computación.Recientemente, migramos la aplicación a Server 2008 de 64 bits después de recibir garantías de la empresa de que era compatible y realizar algunas pruebas preliminares que demostraron que la aplicación funcionaba en el entorno de 64 bits.Desafortunadamente, la persona que realizó las pruebas no probó la funcionalidad de un par de aplicaciones que tengo y que dependen del acceso a los datos para realizar el procesamiento en vivo y posterior de los datos para producir algunos informes.

Resulta que la aplicación no tiene un controlador ODBC de 64 bits para acceder a sus datos internos y no puede usar un controlador ODBC de SQL Server de 64 bits para exportar sus datos al servidor SQL.Incluye e instala un controlador ODBC de 32 bits, pero lo instala como fuente de datos del usuario, no como fuente de datos del sistema, lo que significa que mi servicio de Windows que ejecuta la colección en vivo no puede encontrarlo.Tampoco puedo crear un DSN del sistema porque la consola de administración de Fuentes de datos no puede encontrar el controlador instalado.

Mi pregunta es ¿cómo configuro una fuente de datos para esta conexión a la que puedo acceder desde un servicio de Windows C#/.NET que se ejecuta con una cuenta del sistema?

Como descubrí una manera de hacerlo, proporcionaré mi solución como respuesta (de acuerdo con el Preguntas más frecuentes sobre cómo responder a su propia pregunta).

Similar a:¿Qué software existe para conectar una aplicación ODBC de 64 bits a un controlador ODBC de 32 bits en Windows?

¿Fue útil?

Solución

Resulta que puede crear conexiones ODBC de 32 bits usando C:\Windows\SysWOW64\odbcad32.exe. Mi solución fue crear la conexión ODBC de 32 bits como un sistema DSN. Esto todavía no me permitía conectarme ya que .NET no podía buscarlo. Después de una búsqueda significativa e infructuosa para encontrar cómo hacer que la clase ODBCConnection busque el DSN en el lugar correcto, Me topé con un sitio web que sugirió modificar el registro para resolver un problema diferente.

Terminé creando la conexión ODBC directamente debajo HKLM\Software\ODBC. Busqué en la tecla SYSWOW6432 para encontrar los parámetros que se configuraron utilizando la versión de 32 bits de la herramienta de administración ODBC y recreé esto en la ubicación estándar. Sin embargo, no agregué una entrada para el controlador, ya que el instalador estándar tampoco instaló para la aplicación.

Después de crear la entrada (a mano), encendí mi servicio de Windows y todo estaba feliz.

Otros consejos

Abra el administrador de IIS, seleccione grupos de aplicaciones, seleccione el grupo de aplicaciones que está utilizando, haga clic en Configuración avanzada en el menú de la derecha. En general, establezca "Habilitar aplicaciones de 32 bits" para "verdadero".

Muchas de estas respuestas son bastante antiguas, así que pensé en actualizarlas con una solución que creo que es útil.

Nuestro problema fue similar al de OP, actualizamos máquinas XP de 32 bits a Windows 7 de 64 bits y nuestro software de aplicación que usa un controlador ODBC de 32 bits dejó de poder escribir en nuestra base de datos.

Resulta que hay dos administradores de fuentes de datos ODBC, uno para 32 bits y otro para 64 bits.Así que tuve que ejecutar la versión de 32 bits que se encuentra en C:\Windows\SysWOW64\odbcad32.exe.Dentro del Administrador de fuentes de datos ODBC, pude ir a la pestaña DSN del sistema y agregar mi controlador a la lista usando el botón Agregar.(Puede consultar la pestaña Controladores para ver una lista de los controladores que puede agregar; si su controlador no está en esta lista, es posible que deba instalarlo).

El siguiente problema fue que el software que ejecutamos estaba compilado para usar "cualquier CPU".Esto vería que el sistema operativo era de 64 bits, por lo que miraría las fuentes de datos ODBC de 64 bits.Así que tuve que forzar que el programa se compilara como un programa x86, lo que luego le indica que mire las fuentes de datos ODBC de 32 bits.Para configurar su programa en x86, en Visual Studio vaya a las propiedades de su proyecto y en la pestaña de compilación en la parte superior hay una lista desplegable de plataformas y elija x86.Si no tiene el código fuente y no puede compilar el programa como x86, puede hacer clic derecho en el archivo .exe del programa, ir a la pestaña de compatibilidad y elegir la compatibilidad que funcione para usted.

Una vez que agregué los controladores y el programa apuntó a los controladores correctos, todo funcionó como antes.Esperemos que esto ayude a cualquiera que trabaje con software antiguo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top