Aplicación VB6 heredada bajo error SQL de Win7

Aplicación VB6 heredada bajo error SQL de Win7

Tenemos en funcionamiento una aplicación heredada bastante desafortunada, escrita originalmente en VB6 y anterior a cualquier miembro de nuestro departamento de TI en al menos 5 años. Tenemos un desarrollador contratado para el mantenimiento continuo y donde puede reescribir secciones en código .NET (no estoy seguro de sus técnicas aquí, este es un trabajo secundario para su trabajo habitual como ingeniero de IBM) la aplicación funciona bien (como es) en Windows XP. Sólo tenemos un par de máquinas con Windows 7 principalmente para realizar pruebas y esta aplicación parece chocar contra una pared. Cosas como que el fondo no se carga y errores de SQL. Esto incluso se ejecuta bajo administrador.

La ejecución de un seguimiento de SQL desde el panel de control de ODBC muestra varias cosas interesantes. Inicialmente establece una conexión exitosa con la base de datos donde ejecuta una consulta para determinar si está ejecutando la versión correcta. Esta consulta funciona bien.

            558-1af0 ENTER SQLExecDirectW 
  HSTMT               0x020D7548
  WCHAR *             0x04C8F0F0 [     115] "SELECT count(*) c FROM tblSoftwareVersion WHERE  fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'"
  SDWORD                   115

BMS             558-1af0 EXIT  SQLExecDirectW  with return code 1 (SQL_SUCCESS_WITH_INFO)
  HSTMT               0x020D7548
  WCHAR *             0x04C8F0F0 [     115] "SELECT count(*) c FROM tblSoftwareVersion WHERE  fldSoftwareVersion = '123456' AND fldSoftwareName = 'Application.VB'"
  SDWORD                   115

Luego parece interrumpir su conexión y no puede encontrar la conexión ODBC a pesar de que se está conectando a la misma base de datos. Desde el seguimiento, parece que configura la conexión, luego comienza a activar SQLFreeStmt para desvincularse y cerrarse y luego, cuando está en la aplicación e intenta hacer lo suyo, no hay conexión.

558-1af0 ENTER SQLFreeStmt 
  HSTMT               0x020D7548
  UWORD                        2 <SQL_UNBIND>

BMS             558-1af0 EXIT  SQLFreeStmt  with return code 0 (SQL_SUCCESS)
  HSTMT               0x020D7548
  UWORD                        2 <SQL_UNBIND>

Entonces esto sucede cuando intento hacer algo que extraiga datos.

            558-1af0 ENTER SQLDriverConnectW 
  HDBC                0x020DDA00
  HWND                0x00000000
  WCHAR *             0x73EF8634 [      -3] "******\ 0"
  SWORD                       -3 
  WCHAR *             0x73EF8634 
  SWORD                       -3 
  SWORD *             0x00000000
  UWORD                        0 <SQL_DRIVER_NOPROMPT>

BMS             558-1af0 EXIT  SQLDriverConnectW  with return code -1 (SQL_ERROR)
  HDBC                0x020DDA00
  HWND                0x00000000
  WCHAR *             0x73EF8634 [      -3] "******\ 0"
  SWORD                       -3 
  WCHAR *             0x73EF8634 
  SWORD                       -3 
  SWORD *             0x00000000
  UWORD                        0 <SQL_DRIVER_NOPROMPT>

  DIAG [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0)

Casi todas mis búsquedas sobre este tema arrojan problemas de programación en los que la cadena de conexión tiene un problema. Sin embargo, lo único que es diferente en este escenario particular es Windows 7. Sé que la cadena de conexión está bien ya que funciona en las máquinas XP. Se supone que los componentes de VB siguen funcionando en Win7. Mi computadora ejecuta Win7 de 32 bits y mi vicepresidente ejecuta Win7 de 64 bits y ambos tienen el mismo problema, por lo que se puede descartar.

Ya intenté reinstalar SQL Native Client y el tiempo de ejecución de VB, así como la aplicación en cuestión. Ojalá pueda encontrar una solución y no tener que recurrir al uso de XP VM.

Editar: Bueno, después de muchos intentos, nos hemos visto obligados a optar por XP VM como solución aquí. O los componentes de VB no son tan compatibles como dicen o esta antigua aplicación está haciendo algo raro.

Respuesta1

Si es una aplicación que se ejecuta desde el escritorio (es decir, no como un servicio), ¿intentó configurar la aplicación para que se ejecute en modo de compatibilidad? Tuve un problema similar con un programa VB6 (la misma función para leer el registro se llama desde dos partes diferentes del programa, una funciona, la otra no, pero desde el IDE de VB6 ambas funcionan) y simplemente hice clic derecho y probé Win7. para compatibilidad y elija el modo XP SP2 solucionó el problema.

Respuesta2

El modo XP terminó siendo la única solución que funcionaría.

información relacionada