Indice dei contenuti
Questo insidioso errore di configurazione si manifesta solitamente a seguito della (re)installazione di un programma piuttosto vecchio su un sistema appena aggiornato a Windows 7 (o versione superiore) a 64-bit. Il software in questione, solitamente un client gestionale fatto in casa, funziona grazie a una connessione a un Database locale o remoto realizzata mediante driver ODBC.
Il problema
Il nostro scenario si verifica quando il programma di cui sopra non riesce a trovare la vostra origine dati e, nin potendo effettuare la connessione, presenta una finestra pop-up contenente il seguente errore:
ODBC Call Failed - Error 3151
Oppure, a seconda della versione del driver ODBC installato:
ODBC Connection Failed - Error 3146
La prima cosa da fare è, ovviamente, assicurarsi di aver installato l'ultima versione del driver ODBC sulla macchina e configurato correttamente il Data Source relativo al vostro Database tramite lo strumento di gestione ODBC presente in Pannello di Controllo -> Strumenti di Amministrazione -> Origini Dati ODBC. Nel caso in cui non lo abbiate fatto, rimediate subito! In caso contrario, continuate a leggere.
La causa
Nella maggior parte dei casi il problema è legato alla gestione delle connessioni ODBC da parte delle ultime versioni di Windows a 64-bit. A partire da Windows 7, infatti, lo strumento di amministrazione "Origini Dati ODBC" è presente in due versioni, quella per i client che necessitano di driver a 32 bit e quella che supporta i driver a 64 bit. Le due versioni, come spiegato in una nota della knowledge-base ufficiale, si trovano all'interno delle seguenti cartelle di sistema:
Origini Dati ODBC a 32 bit
1 |
c:\windows\sysWOW64\odbcad32.exe |
Origini Dati ODBC a 64 bit
1 |
c:\windows\system32\odbcad32.exe |
Quale è quella giusta? Dipende ovviamente dal tipo di Data Source che dovete configurare: la versione a 64 bit gestisce le connessioni ODBC che necessitano di Driver a 64 bit, mentre quella a 32 bit gestisce tutte le altre. nella maggior parte dei casi, quindi, la causa del vostro problema è dovuta al fatto che avete eseguito i passaggi corretti, utilizzando però lo strumento sbagliato.
La soluzione
Il problema, inutile dirlo, si risolve configurando l'origine dati ODBC tramite lo strumento appropriato: quello a 32 bit nel caso - molto probabile, se vi siete imbattuti nel problema - in cui la vostra applicazione necessiti di un driver ODBC a 32 bit e quello a 64 bit in tutti gli altri casi.
L'esistenza di due strumenti identici - addirittura con lo stesso nome file! - per impostare in modi diversi la medesima cosa è particolarmente fastidiosa e può generare non poca confusione. Ne ha probabilmente convenuto anche la Microsoft che non a caso, a partire da Windows 8, ha previsto due icone ben distinte all'interno degli Strumenti di Amministrazione che consentono a un utente mediamente smaliziato di potersi rendere conto della faccenda:
Sfortunatamente, il problema resta sostanzialmente irrisolto per tutte le versioni di Windows 7 a 64 bit dove, per ragioni - a detta della Microsoft stessa - di retro-compatibilità, questo Workaround non è mai stato implementato. All'interno degli Strumenti di Amministrazione di Windows 7 troverete infatti una singola icona, relativa alla versione a 64 bit dello strumento ODBC: motivo per cui moltissimi utenti e amministratori di sistema continuano a tutt'oggi a imbattersi nel problema e a risolverlo - si spera - leggendo con attenzione la knowledge-base oppure imbattendosi fortuitamente in articoli come questo.
Nella speranza che Microsoft trovi il modo di aggiungere una icona al pannello di controllo senza creare problemi di retro-compatibilità al proprio SO, concludo consigliandovi la lettura di alcuni articoli che descrivono una serie di problematiche legate all'argomento:
- ODBC Call Failed - Error 3151 [stackoverflow.com]
- ODBC Call Failed - Error 3151 [msdn.microsoft.com]
- Why is my 32bit ODBC connection not showing up in odbcad32.exe? [superuser.com]
- ODBC Administrator tool displays both 32-bit and 64-bit user DSNs [support.microsoft.com]
- Managing Data Sources [msdn.microsoft.com]
Anche per questa volta è tutto: felice connessione!