ODBC su macchine a 64 bit

Ogni tanto succede che in Microsoft qualcuno si beva il cervello e per non modificare abitudini consolidate prenda delle decisioni quantomeno bizzarre.
Almeno, spero sia per quello, non trovo un altra spiegazione.
Mi è capitato un esempio di “scempiaggine” quando ho dovuto configurare dei nuovi portatili con Windows 7 a 64 bit e farli collegare via ODBC al nostro database server.
La gestione dei DSN per i collegamenti ODBC in Windows 7 a 64 bit è quantomeno bizzarra.

[se non sapete cos’è un driver ODBC, fate finta di niente, non serve per capire il resto]

Già la scelta dei nomi delle cartelle e dei file eseguibili si presta ad ambiguità allucinanti: gli eseguibili e le librerie DLL a 64 bit si trovano nella cartella Windows\system32, mentre quelle del sottosistema a 32 bit si trovano in Windows\sysWOW64.
Logico vero?
Probabilmente gli sviluppatori fanno delle riunioni di brainstorming dove tutti fumano erbe… aromatiche (no, non rosmarino, e neanche timo… quell’altra con foglie a 7 punte… forse viene da li il nome Windows 7?).

In più, in entrambe queste cartelle esiste un file eseguibile che si chiama ODBCAD32.EXE (e già il fatto che ci siano due eseguibili con lo stesso nome non fa che confondere le acque) che è l’utility di configurazione dei DSN (dei collegamenti ai vari database, per farla breve). Solo che quello che si trova in Windows\system32 è quello che gestisce i DSN per i driver a 64 bit, mentre quello che si trova in Windows\sysWOW64 è quello per i driver a 32 bit.

Tutto chiaro? Più confuso di così si muore…

Per concludere l’opera ognuna delle due versioni di ODBCAD32.EXE ha la sua configurazione, separata ed indipendente dall’altra (e qui mi vien da dire “meno male”)
La versione che viene lanciata accedendo al pannello di controllo è quella a 64 bit.
L’altra invece va cercata e lanciata a mano…

Mi chiedo: quanto costava mettere 2 collegamenti nel pannello di controllo, uno alla versione 64 bit e uno a quella 32 bit? Almeno uno si sarebbe fatto la domanda “Come mai ci sono 2 versioni? Forse perché hanno configurazioni indipendenti?”

In ogni caso, per configurare correttamente i collegamenti al nostro database server per i colleghi col PC nuovo, avendo Windows 7 a 64 bit ma Office a 32 bit, è necessario lanciare manualmente l’utility di configurazione da Windows\sysWOW64\ODBCAD32.EXE e lì creare i DSN opportuni.

Ganja rulez!

More info:

Microsoft Answers

Windows 7 e problemi con ODBC

17 thoughts on “ODBC su macchine a 64 bit

  1. Caro Jenga,
    condivido il massimo disgusto per non dire l’immane fesseria degli ingegneri di Redmond sul tema in questione. Io mi sto imbattendo nello stesso problema, aggravato dal fatto che avrei la pretesa di utilizzare un applicativo ACCESS con connessioni DSN-LESS ad Oracle. In pratica referenzio il driver direttamente nella stringa di connessione, utilizzando con un po’ di sano masochismo il driver microsoft ({Microsoft ODBC for Oracle}). Lo stesso applicativo gira alla perfezione su XP e WIN7a 32bit, ovviamente deraglia su macchine a 64bit. Per caso hai mai avuto occasione di imbatterti nel problema?
    Grazie per qualsiasi hint,
    pdb

    • Sorvolando i motivi che ti hanno portato a questa pratica “masochista”, non credo di poterti essere molto d’aiuto, di solito utilizzo Access con un DSN creato appositamente.
      Il problema credo risieda nel fatto che viene “referenziato” il driver sbagliato: se il client Oracle è a 32 bit va referenziato il driver a 32 bit, e lo stesso per la versione 64 bit.
      In bocca al lupo!

  2. Ciao sono un Happy Runner anch’io ma ti disturbo per tutt’altro e cioè l’argomento di questo post. Mi sto scontrando con odbcad32 e x adesso sto perdendo. Devo creare un odbc su un file *.xlsm e nella versione a 32 bit non è contemplato. Nel 64 bit c’è ma ovviamente non funziona. Come la risolvo? Ciao e grazie

    • Ciao Gianpaolo, magari ci siamo pure incontrati a qualche gara!
      Riguardo al problema dell’ODBC *.xlsm: per quel che ne so, il driver *.xlsm viene installato da Office 2007 e successivi. Immagino che nel tuo caso sulla macchina a 64 bit ci sia installato Office 2007 a 64 bit, quindi nella “versione” 32 bit di odbcad32 non lo trovi.
      Dovrebbe bastare scaricare e installare i driver di Office System 2007 – Data Connectivity a 32 bit per ottenere quello che ti serve: http://www.microsoft.com/it-it/download/details.aspx?id=23734
      Happy Corse!!

      • Grazie mille!il problema l’ho parzialmente risolto con quel file.Ho dovuto anche disinstallare l’office a 64 bit ed installarlo a 32 bit e dopo ha funzionato perfettamente.
        Per le corse dubito che ci siamo visti. Io sono un Happy “fuori sede”. Sono di Senigallia e sono venuto a Milano per la maratona di quest’anno. Comunque sono anche sul nostro sito della Happy Runner e sulla pagina Facebook. Ciao e a presto!

  3. Salve,

    ho un problema che spero mi puoi aiutare. Dovrei fare un collegamento excel ad un db oracle pre estrarre dei dati. Fin qui semplice. Il problema è che ho seven a 64 bit i driver oracle sono a 2 bit e office è a 32 bit. Quando provo ad collegare tramite DNS mi dà il seguente errore “test connectionfailed because of an error in initializing provider. Unspecified error

    • Prima di tutto verifica che il client oracle sia installato come si deve: apri un prompt (cmd) e fai un TNSPING al server Oracle (tipo TNSPING 5)
      Se funziona apri la versione 32 bit di ODBCAD32 (rileggi sopra dove sta) e crea il DSN di sistema verso il tuo server.
      Se non funziona, c’è qualcosa che non va nella configurazione del client Oracle.
      Nel fare queste prove disabilita il firewall su seven. Se tutto funziona lo puoi riattivare e eventualmente mettere una regola di eccezione.

      • ciao,
        ho effettuato tutti i passi, sono anche riuscita acreare un odbc da SYSwow64 e funziona anche il test al db. Il mio problema è che a questo punto sia con access sia con excel quando provo ad importare i dati fallisce.
        “st connectionfailed because of an error in initializing provider. Unspecified error “–> se provo con excel
        “TNS: impossibile risolverel’identificativodi connessione specificato 08004 12154. Driver’s SQLSETCONNECTATTR failed (#0)

        Grazie

        • Hum… sei sicura che il TNSPING funzioni? Sembra un errore legato alla risoluzione del nome dell’istanza Oracle a cui ti devi collegare. Verifica che nel file tnsnames.ora gli alias siano creati correttamente. L’errore ORA-12154 è piuttosto generico, ma di solito indica l’incapacità del client Oracle di connettersi all’istanza coretta.
          Dai un occhiata anche a questo: http://bit.ly/1iDUjj3

          • ho finalmente risolto… il problema? Semplice.. i driver odbc di oracle 10.2 non sono compatibili con seven. Bisogna istallare i driver successivi… A saperlo prima…

              • infatti non mi ha dato problemi nell’istallazione, riuscivo anche a fare il test connectio senza problemi. Ma andando a usare l’ODBC via excel o access nulla non funzionava. Girando su vari blog mi sono imbattuta sull’incompatibilità. O provato e a funzionato🙂

  4. Impossibile trovare il client e i componenti di rete Oracle ™ma oracle ed il relativo TOAD funzione correttamente.
    nella versione 64bit non trovo gli ODBC che invece trovo nella versione 32.
    come risolvo il problema degli ODBC?
    Grazie di cuore.
    Fabio

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...