In una versione a 64 bit di Windows lo strumento Amministratore ODBC visualizza i DSN utente sia a 32 bit che a 64 bit

Questo articolo fornisce una soluzione alternativa per il problema che si verifica nello strumento Amministratore origine dati ODBC.

Versione originale del prodotto: SQL Server
Numero originale della Knowledge Base: 942976

Sintomi

Una versione a 64 bit del sistema operativo Microsoft Windows include le versioni seguenti dello strumento Amministratore origine dati ODBC (Odbcad32.exe):

  • La versione a 32 bit del file Odbcad32.exe si trova nella cartella %systemdrive%\Windows\System32.
  • La versione a 64 bit del file Odbcad32.exe si trova nella cartella %systemdrive%\Windows\SysWoW64.

Il file Odbcad32.exe visualizza i tipi di nomi di origine dati (DSN) seguenti:

  • DSN di sistema
  • DSN utente

Sintomo 1

La versione a 32 bit dello strumento Amministratore ODBC visualizza DSN di sistema a 32 bit, DSN utente a 32 bit e DSN utente a 64 bit. La versione a 64 bit dello strumento Amministratore ODBC visualizza DSN di sistema a 64 bit, DSN utente a 32 bit e DSN utente a 64 bit.

Sintomo 2

La funzione SQLDataSources restituisce tutte le versioni dei DSN utente, indipendentemente dall'architettura dell'applicazione. La funzione SQLDataSources chiamata in un'applicazione a 32 bit restituisce solo DSN di sistema per i driver a 32 bit, ma restituisce DSN utente sia per i driver a 32 bit che per i driver a 64 bit. Analogamente, la funzione SQLDataSources chiamata in un'applicazione a 64 bit restituisce solo DSN di sistema per i driver a 64 bit, ma restituisce DSN utente sia per i driver a 32 bit che per i driver a 64 bit. Pertanto, se l'applicazione effettua una connessione usando un DSN utente restituito dalla funzione SQLDataSources, è possibile che venga visualizzato il messaggio di errore seguente:

Nome origine dati non trovato e nessun driver predefinito specificato

Si considerino ad esempio gli scenari seguenti: Si crea un DSN utente per il driver a 32 bit "Microsoft Access Driver (*.mdb)". Questo driver non dispone di una versione a 64 bit corrispondente. La funzione SQLDataSources chiamata in un'applicazione a 64 bit restituisce questo DSN utente a 32 bit. Tuttavia, se si effettua una connessione tramite questo DSN utente a 32 bit, viene visualizzato il messaggio di errore menzionato in precedenza in questa sezione.

Causa

I DSN utente vengono archiviati nella sottochiave del Registro di sistema seguente:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

Il reindirizzamento del Registro di sistema non è abilitato per questa sottochiave del Registro di sistema. Pertanto, i DSN utente sono visibili sia nelle versioni a 32 bit che a 64 bit dello strumento amministratore ODBC.

Risoluzione

Per mantenere la compatibilità con le versioni precedenti, non è attualmente disponibile alcuna soluzione per questo problema.

Soluzione alternativa

Per risolvere questo problema, usare la versione appropriata dello strumento amministratore ODBC. Se si crea e poi si esegue un'applicazione a 32 bit su un sistema operativo a 64 bit, è necessario utilizzare lo strumento %windir%\SysWOW64\odbcad32.exe Amministratore origine dati ODBC per creare l'origine dati ODBC. Per indicare il tipo di DSN, è possibile aggiungere "_32" ai DSN utente a 32 bit e "_64" ai DSN utente a 64 bit.

Ulteriori informazioni

Lo strumento amministratore ODBC a 64 bit può essere richiamato da Pannello di controllo per gestire i DSN utente e i DSN di sistema usati dai processi a 64 bit. In un sistema operativo a 64 bit, lo strumento amministratore ODBC a 32 bit viene usato per Windows nei processi Windows 64 (WOW64). È necessario richiamare direttamente lo strumento amministratore ODBC a 32 bit dalla cartella SysWoW64. È possibile usare lo strumento amministratore ODBC a 32 bit per gestire i DSN utente e i DSN di sistema usati dai processi WOW64.

I DSN di sistema vengono archiviati nella sottochiave del Registro di sistema seguente:

HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI

Il reindirizzamento del Registro di sistema è abilitato per questa sottochiave del Registro di sistema. Pertanto, i DSN di sistema per i driver a 32 bit e per i driver a 64 bit sono separati. Lo strumento Amministratore ODBC a 64 bit non visualizza i DSN di sistema creati dallo strumento Amministratore ODBC a 32 bit. Analogamente, lo strumento Amministratore ODBC a 32 bit non visualizza i DSN di sistema creati dallo strumento Amministratore ODBC a 64 bit. Inoltre, lo strumento Amministratore ODBC a 64 bit non visualizza i DSN di sistema che utilizzano driver a 32 bit. Analogamente, lo strumento Amministratore ODBC a 32 bit non visualizza i DSN di sistema che utilizzano driver a 64 bit.

I DSN utente vengono archiviati nella sottochiave del Registro di sistema seguente:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

Il reindirizzamento del Registro di sistema non è abilitato per questa sottochiave del Registro di sistema. Di conseguenza, entrambi gli strumenti Amministratore ODBC visualizzano tutti i DSN utente.

Per ulteriori informazioni sul reindirizzamento del Registro di sistema, vedere la sezione Redirector Registro di sistema.