System DSN vs usuário DSN

7

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.

    
por waldrumpus 24.08.2012 / 09:28

2 respostas

7

O artigo da Microsoft de Gerenciamento de fontes de dados diz o seguinte:

To manage a data source that connects to a 32-bit driver under 64-bit platform, use c:\windows\sysWOW64\odbcad32.exe. To manage a data source that connects to a 64-bit driver, use c:\windows\system32\odbcad32.exe. In Administrative Tools on a 64-bit Windows 8 operating system, there are icons for both the 32-bit and 64-bit ODBC Data Source Administrator dialog box.

If you use the 64-bit odbcad32.exe to configure or remove a DSN that connects to a 32-bit driver, for example, Driver to Microsoft Access (*.mdb), you will receive the following error message:

The specified DSN contains an architecture mismatch between the Driver and Application

     

Para resolver esse erro, use o odbcad32.exe de 32 bits para configurar ou remover o DSN.

Seu aplicativo é evidentemente de 32 bits. Você usou o odbcad32.exe correto para definir o DSN?

    
por 27.08.2012 / 10:10
0

Direitos do usuário: Certifique-se de que o usuário tenha a capacidade de acessar o DNS do sistema ou o DNS do usuário. A situação aqui era que o Lotus-Notes era executado como um serviço no SYSTEM-User. Não houve conectividade com o ODBC. Nós mudamos o User for the Service e isso resolveu o problema Problema.

    
por 27.03.2013 / 11:12