Aplicação Legacy VB6 sob erro Win7 SQL

1

Temos uma aplicação de legado bastante infeliz no trabalho, escrita originalmente em VB6, anterior a qualquer pessoa em nosso departamento de TI por pelo menos 5 anos. Nós temos um desenvolvedor contratado para manutenção contínua e onde ele pode reescrever seções em código .NET (não tenho certeza sobre suas técnicas aqui, este é um trabalho paralelo para seu trabalho regular como engenheiro da IBM) o aplicativo funciona bem (como é) no Windows XP. Temos apenas algumas máquinas com o Windows 7, principalmente para testes, e este aplicativo parece estar em uma parede. Coisas como o fundo não carregando e erros de SQL. Isso é mesmo executado sob o administrador.

A execução de um rastreamento SQL a partir do painel de controle do ODBC mostra várias coisas interessantes. Ele faz uma conexão com o banco de dados com êxito inicialmente, onde executa uma consulta para determinar se está executando a versão correta. Esta consulta funciona bem.

            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

Em seguida, parece soltar sua conexão e não é possível encontrar a conexão ODBC, apesar do fato de sua conexão com o mesmo banco de dados. A partir do rastreio parece que ele configura a conexão, em seguida, ele começa a disparar SQLFreeStmt para desvincular e fechar, em seguida, quando no aplicativo e tenta fazer a sua coisa, não há conexão.

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>

Então isso acontece quando tento fazer algo que extrai dados

            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)

Quase toda a minha pesquisa sobre esse problema surge com problemas de programação em que a cadeia de conexão tem um problema. A única coisa que é diferente neste cenário em particular é o Windows 7, eu sei que a string de conexão é boa, pois funciona nas máquinas XP. Os componentes do VB devem continuar funcionais no Win7. Meu computador está rodando o win7 de 32 bits e meu VP está rodando o Win7 de 64 bits e ambos têm o mesmo problema, então isso pode ser descartado.

Eu já tentei reinstalar o SQL Native Client e o tempo de execução do VB, bem como o aplicativo em questão. Espero que eu possa encontrar uma solução e não ter que recorrer ao uso da VM XP.

Editar - Depois de muitas tentativas, fomos forçados a usar a XP VM como a solução aqui. Ou os componentes do VB não são tão compatíveis quanto alegam, ou este aplicativo antigo está fazendo algo engraçado.

    
por Shial 25.01.2010 / 20:58

2 respostas

0

O modo XP acabou sendo a única solução que funcionaria.

    
por 08.02.2011 / 15:30
1

Se for um aplicativo executado na área de trabalho (ou seja, não como um serviço), você tentou configurar o aplicativo para ser executado no modo de compatibilidade? Eu tive um problema semelhante com um programa VB6 (mesma função para ler o registro chamado de duas partes diferentes do programa, um funciona, o outro não, mas a partir do VB6 IDE ambos funcionam) e apenas botão direito do mouse e ter o teste Win7 para compatibilidade e escolha o modo XP SP2 curou o problema.

    
por 26.03.2010 / 14:17