A ferramenta Administrator de ODBC exibe os DSNs de 32 bits e de 64 bits em uma versão de 64 bits do Windows

Este artigo fornece uma solução alternativa para o problema que ocorre na ferramenta Administrador de Fonte de Dados ODBC.

Versão original do produto: SQL Server
Número original do KB: 942976

Sintomas

Uma versão de 64 bits do sistema operacional Microsoft Windows inclui as seguintes versões da ferramenta Administrador de Fonte de Dados ODBC (Odbcad32.exe):

  • A versão de 32 bits do arquivo Odbcad32.exe está localizada na pasta %systemdrive%\Windows\System32.
  • A versão de 64 bits do arquivo Odbcad32.exe está localizada na pasta %systemdrive%\Windows\SysWoW64.

O arquivo Odbcad32.exe exibe os seguintes tipos de nomes de fontes de dados (DSNs):

  • DSNs de sistema
  • DSNs de usuário

Sintoma 1

A versão de 32 bits da ferramenta Administrador de ODBC exibe DSNs de sistema de 32 bits, DSNs de usuário de 32 bits e DSNs de usuário de 64 bits. A versão de 64 bits da ferramenta Administrador ODBC exibe DSNs de sistema de 64 bits, DSNs de usuário de 32 bits e DSNs de usuário de 64 bits.

Sintoma 2

A função SQLDataSources retorna todas as versões de DSN do usuário, independentemente da arquitetura do aplicativo. A função SQLDataSources que é chamada em um aplicativo de 32 bits retorna apenas DSNs do sistema para drivers de 32 bits, mas retorna DSNs de usuário para drivers de 32 bits e drivers de 64 bits. Da mesma forma, a função SQLDataSources que é chamada em um aplicativo de 64 bits retorna apenas DSNs do sistema para drivers de 64 bits, mas retorna DSNs de usuário para drivers de 32 bits e drivers de 64 bits. Portanto, se o aplicativo fizer uma conexão usando um DSN do usuário que é retornado pela função SQLDataSources, você poderá receber a seguinte mensagem de erro:

Nome da fonte de dados não encontrado e nenhum driver padrão especificado

Por exemplo, considere o seguinte cenário: Você cria um usuário DSN para o driver de 32 bits "Driver do Microsoft Access (*.mdb)." Esse driver não possui uma versão correspondente de 64 bits. A função SQLDataSources que é chamada em um aplicativo de 64 bits retorna esse DSN de usuário de 32 bits. No entanto, se você fizer uma conexão com esse DSN de usuário de 32 bits, receberá a mensagem de erro mencionada anteriormente nesta seção.

Motivo

Os DSNs de usuário são armazenados na seguinte subchave do Registro:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

O redirecionamento de Registro não está habilitado para essa subchave do registro. Portanto, os DSNs de usuário são visíveis nas versões de 32 bits e 64 bits da ferramenta Administrador de ODBC.

Resolução

Para manter a compatibilidade com versões anteriores, nenhuma resolução para esse problema está disponível atualmente.

Solução alternativa

Para contornar esse problema, use a versão apropriada da ferramenta Administrador de ODBC. Se você criar e, em seguida, executar um aplicativo como um aplicativo de 32 bits em um sistema operacional de 64 bits, deverá usar a ferramenta de Administrador ODBC em %windir%\SysWOW64\odbcad32.exe para criar o origem de dados ODBC. Para indicar o tipo de DSN, você pode adicionar "_32" aos DSNs de usuário de 32 bits e "_64" aos DSNs de usuário de 64 bits.

Mais informações

A ferramenta de administrador de ODBC de 64 bits pode ser invocada no Painel de Controle para gerenciar DSNs de usuário e DSNs de sistema que são usados por processos de 64 bits. Em um sistema operacional de 64 bits, a ferramenta de Administrador de ODBC de 32 bits é usada para o Windows em processos do Windows 64 (WOW64). Você deve invocar diretamente a ferramenta de Administrador ODBC de 32 bits da pasta SysWoW64. Você pode usar a ferramenta de Administrador ODBC de 32 bits para gerenciar DSNs de usuário e DSNs de sistema que são usados pelos processos WOW64.

Os DSNs do Sistema são armazenados na seguinte subchave do Registro:

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

O redirecionamento de Registro está habilitado para essa subchave do Registro. Portanto, os DSNs do sistema para drivers de 32 bits e drivers de 64 bits são separados. A ferramenta de Administrador de ODBC de 64 bits não exibe DSNs do sistema criados pela ferramenta de Administrador de ODBC de 32 bits. Da mesma forma, a ferramenta de Administrador de ODBC de 32 bits não exibe DSNs do sistema criados pela ferramenta de Administrador de ODBC de 64 bits. Além disso, a ferramenta de Administrador ODBC de 64 bits não exibe DSNs do sistema que usam drivers de 32 bits. De forma semelhante, a ferramenta de Administrador de ODBC de 32 bits não exibe DSNs do sistema que usam drivers de 64 bits.

Os DSNs de usuário são armazenados na seguinte subchave do Registro:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

O redirecionamento de Registro não está habilitado para essa subchave do Registro. Portanto, ambas as ferramentas de Administrador de ODBC exibem todos os DSNs de usuário.

Para obter mais informações sobre este redirecionamento de Registro, consulte Redirecionador de Registro.