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

20 pensieri su “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

  5. Il tuo argomento è molto interessante, ma una volta entrato nel ODBCAD32.exe del 32bit come faccio a referenziare il DSN del 64bit?

    • Aspetta, non facciamo confusione: ODBCAD32 è il nome del programma di gestione degli ODBC, e si chiama nello stesso modo sia la versione a 32bit che quella a 64bit.
      Normalmente da Win7 – pannello di controllo su una macchina a 64bit lancia la versione a 64bit e permette di creare ODBC basati sulle dll a 64bit. Nell’utility si vedono ANCHE gli ODBC a 32bit ma non si possono modificare.
      Quindi tutto dipende da quale versione hai lanciato per creare l’ODBC (perchè da quella dipende quale dll è stat “agganciata” al nome ODBC)
      Questa cosa per fortuna in Windows 10 l’hanno cambiata, e nel pannello di controllo ci sono i collegamenti alle due versioni.

  6. Buona sera a tutti, leggendo i vari quesiti posti non rilevo quanto segue:
    Ho windows 10 x64 ed ho installato correttamente gli ODBC driver di Oracle 32 bit e creato il DSN di sistema che con office 2013 x32 funziona correttamente. Se installo office 2013 o successivo a 64 bit e da excel/connessioni esterne non vedo più i DSN a 32 bit. C’è un modo per fargli vedere i DSN a 32 bit o devo tenermi office a 32 bit? Alternativamente è possibile installare i driver ODBC a 64 bit per collegarmi ad un database Oracle 11g che gira a 32 bit? Grazie

Rispondi

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

Logo di WordPress.com

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

Foto di Facebook

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

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.