Todo novo computador da minha empresa passa pelo mesmo processo de instalação de software; um programa em particular precisa acessar um banco de dados do MS SQL Server via ODBC. O programa é então usado por vários usuários do domínio no mesmo computador em momentos diferentes.
Em máquinas com Windows XP, simplesmente configurei a conexão ODBC como DSN do sistema . Não importava qual usuário estivesse logado, a conexão funcionaria para ele e meu trabalho estava terminado.
Recentemente, temos mais e mais máquinas com Windows 7, e esse método parece não funcionar mais. O programa não reconhece as conexões que eu configurei em System DSN , mas reconhece aquelas em User DSN . O problema que tenho com isso é que toda vez que um usuário efetua login em um computador pela primeira vez, recebo uma chamada e preciso instalar seu próprio DSN.
Qual é a razão pela qual isso funciona no XP, mas não no 7? Eu tenho feito errado desde o início?
Atualização: Talvez o motivo não seja o Windows 7, mas o fato de os novos computadores executarem um sistema operacional de 64 bits. Eu digo isso porque quando eu corri um aplicativo de teste ( código-fonte aqui ) no Windows 7 de 64 bits, acessando o DSN do Usuário funcionou bem, mas acessar o DSN do Sistema deu o seguinte mensagem de erro:
IM014: The specified DSN contains an architecture mismatch between the Driver and Application
A documentação da Microsoft indica que isso acontece quando um driver de 32 bits é acessado em um computador de 64 bits ou vice-versa. Isso poderia muito bem ser o problema, porque quando eu mudei o aplicativo de teste para 64 bits, o DSN do sistema pode ser acessado.
A questão agora é: Por que isso acontece para o DSN do sistema, mas não para o DSN do usuário? Existem drivers diferentes instalados para os dois? Isso significa que não poderei usar o DSN do sistema por mais tempo, porque não tenho influência sobre o software que precisamos usar.