Como uso um driver ODBC de 32 bits no servidor de 64 bits 2008 quando o instalador não cria um DSN padrão?

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

Pergunta

Eu encontrei um problema com algum software de terceiros que usamos para rastrear o uso de licença de software em nossos laboratórios de informática. Recentemente, migramos o aplicativo para o servidor de 64 bits 2008, depois de receber garantias da empresa de que ele era compatível e executando alguns testes preliminares que mostraram que o aplicativo funcionou no ambiente de 64 bits. Infelizmente, a pessoa que faz o teste não testou a funcionalidade de alguns aplicativos que eu tenho que depende de acessar os dados para fazer tanto a vida quanto o pós-processamento nos dados para produzir alguns relatórios.

Acontece que o aplicativo não possui um driver ODBC de 64 bits para acessar seus dados internos e não pode usar um driver ODBC do SQL Server de 64 bits para exportar seus dados para o SQL Server. Ele inclui e instala um driver ODBC de 32 bits, mas o instala como uma fonte de dados do usuário, não uma fonte de dados do sistema, o que significa que meu serviço Windows que executa a coleção ao vivo não consegue encontrá-lo. Também não consigo criar um DSN do sistema, pois o console administrativo de fontes de dados não consegue encontrar o driver instalado.

Minha pergunta é como configuro uma fonte de dados para essa conexão que posso acessar a partir de um serviço C#/. Net Windows em execução em uma conta do sistema?

Desde que descobri uma maneira de fazer isso, fornecerei minha solução como uma resposta (de acordo com o Perguntas frequentes sobre como responder sua própria pergunta).

Igual a:Qual software existe para a ponte de um aplicativo ODBC de 64 bits a um driver ODBC de 32 bits no Windows?

Foi útil?

Solução

Acontece que você pode criar conexões ODBC de 32 bits usando C:\Windows\SysWOW64\odbcad32.exe. Minha solução foi criar a conexão ODBC de 32 bits como um sistema DSN. Isso ainda não me permitiu conectar a ele, já que .Net não conseguia procurar. Depois de uma pesquisa significativa e infrutífera para descobrir como obter a classe ODBCConnection para procurar o DSN no lugar certo, Tropecei em um site que sugeria modificar o registro para resolver um problema diferente.

Acabei criando a conexão ODBC diretamente em HKLM\Software\ODBC. Eu procurei na tecla SYSWOW6432 para encontrar os parâmetros configurados usando a versão de 32 bits da ferramenta de administração ODBC e a recriu a no local padrão. No entanto, não adicionei uma entrada para o driver, pois isso também não foi instalado pelo instalador padrão para o aplicativo.

Depois de criar a entrada (à mão), acionei meu serviço Windows e tudo estava feliz.

Outras dicas

Abra o IIS Manager, selecione Pools de aplicativos, selecione o pool de aplicativos que você está usando, clique em Configurações avançadas no menu à direita. Sob General, defina "Ativar aplicativos de 32 bits" como "TRUE".

Muitas dessas respostas são bem antigas, então pensei em atualizar com uma solução que eu acho útil.

Nosso problema era semelhante ao OP's, atualizamos as máquinas XP de 32 bits para o Windows 7 de 64 bits e nosso software de aplicativo que usa um driver ODBC de 32 bits parou de poder escrever em nosso banco de dados.

Acontece que existem dois gerentes de origem de dados ODBC, um por 32 bits e um por 64 bits. Então, eu tive que executar a versão de 32 bits, encontrada em C: Windows syswow64 odbcad32.exe. Dentro do gerenciador de origem de dados ODBC, pude ir para a guia DSN do sistema e adicionar meu driver à lista usando o botão Adicionar. (Você pode verificar a guia Drivers para ver uma lista dos drivers que você pode adicionar, se o seu driver não estiver nesta lista, pode ser necessário instalá -lo).

A próxima edição foi o software que executamos foi compilado para usar 'qualquer CPU'. Isso veria que o sistema operacional era de 64 bits, para que as fontes de dados ODBC de 64 bits ODBC. Então, eu tive que forçar o programa a compilar como um programa X86, que então diz para examinar as fontes de dados ODBC de 32 bits. Para definir seu programa como x86, no Visual Studio, acesse as propriedades do seu projeto e, na guia Build, na parte superior, há uma lista suspensa da plataforma e escolha x86. Se você não possui o código -fonte e não pode compilar o programa como x86, poderá clicar com o botão direito do lado do programa .exe e acessar a guia Compatibilidade e escolher uma compatibilidade que funcione para você.

Depois que os motoristas acrescentaram e o programa apontando para os drivers certos, tudo funcionou como ele. Espero que isso ajude qualquer pessoa a trabalhar com software mais antigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top