2009-12-23 16 views
16

Ho recentemente installato SQL Server 2008 Express sulla mia macchina home Windows 7 Ultimate x64. Ho anche IIS 7.5 con PHP 5.3, e stavo cercando di connettersi a SQL via ADODB, ma continuato a ottenere questo errore:Come connettersi al mio SQL Server a 64 bit con ODBC?

[Microsoft][ODBC Driver Manager] The specified DSN contains an 
architecture mismatch between the Driver and Application 

Dopo aver fatto una piccola quantità di scavare su internet, credo che questo è perché il Il driver ODBC di SQL Server è pensato per i sistemi operativi a 32 bit e il mio 64. Prima di tutto, sono corretto? È questa la ragione per cui mi trovo nei guai? In secondo luogo, se sì, come posso risolvere questo problema? Esistono driver ODBC aggiornati che funzionano con i sistemi operativi a 64 bit? Ho guardato ma non è stato in grado di trovare ...

risposta

25

Hai ragione nel fatto che ha a che fare con i bit.

Spero che questo aiuti:

--from MSDN -

To manage a data source that connects to a 32-bit driver under 64-bit platform, use c:\windows\sysWOW64\odbcad32.exe. To manage a data source that connects to a 64-bit driver, use c:\windows\system32\odbcad32.exe. If you use the 64-bit odbcad32.exe to configure or remove a DSN that connects to a 32-bit driver you will receive this message.

+0

grazie! Sono stupito che quanto sia difficile scoprirlo! – Guillermo

+0

Questo ha funzionato anche per me ... dopo oltre 30 minuti di confusione perché avevo copiato il percorso sbagliato. Se stai leggendo questo articolo, C: \ Windows \ SysWOW64 \ odbcad32.exe è quello che vuoi. –

+0

Grazie, è stato utile. :) – Dharmavir

1

Sto scommettendo che si sta lavorando con il DSN utente.

A seconda del vostro punto di vista, c'è una "caratteristica" o "bug" in ambiente Windows a 64 bit -

  1. DSN a 32 bit utente vengono visualizzati in Amministrazione a 64-bit e quando 64 le applicazioni client a bit richiedono tutti i DSN disponibili, anche se i DSN a 32 bit non possono essere utilizzati dall'app per client a 64 bit e Adminstrator utilizzati.

  2. DSN

    a 64 bit utente vengono visualizzati in Amministratore 32 bit e quando le applicazioni client a 32 bit chiedono tutti i DSN disponibili - anche se i DSN a 64 bit non possono essere usati dal client a 32 bit app e amministratore.

Il messaggio di errore che si descrive viene in su in qualsiasi momento c'è una tale discrepanza tra il numero di bit il DSN e il cliente cercando di lavorare con esso.

Il consiglio di Microsoft è quello di assegnare un nome ai propri DSN utente con _32 o _64, a seconda della versione del driver su cui si basano ... o attenersi ai DSN di sistema.

Esistono soluzioni a 32 e 64 bit per la connessione desiderata. Il testimone delle tue applicazioni client - IIS & PHP, in questo caso - impone la prova della soluzione richiesta.

+0

In realtà ho provato a impostare le cose come DSN di sistema. Se lo desideri, ho essenzialmente riproposto questa domanda a Server Fault perché è più sulla gestione del server che sulla programmazione. È ancora irrisolto, quindi se pensi di poterlo risolvere, fallo assolutamente! http://serverfault.com/questions/97074/ – SoaperGEM

2

Ho provato il C:\Windows\SysWOW64\odbcad32.exe per aggiungere il driver. Ma quando installo un server collegato tra MAS90 e SQL Server 2008 R2 ottengo ancora l'errore di disallineamento dell'architettura. Ho appena parlato con un ragazzo di Sage e lui dice che non funzionerà con l'edizione a 64 bit di Sql Server. Il server collegato funziona con MAS90 solo se l'edizione di Sql Server è a 32 bit.

+3

"Ho appena parlato con un ragazzo" non è davvero un riferimento – Dhara

4

Ho riscontrato lo stesso problema nel tentativo di collegare un server SQL 2012 64 bit a "Sage Timberline" utilizzando l'interfaccia client ODBC Pervasive.

È possibile configurare il DSN a 32 bit, ma SQL Server continua a generare l'errore "disallineamento dell'architettura" quando si tenta di creare un server collegato utilizzando il DSN a 32 bit.

+0

scott ho questo problema, sei riuscito a fare qualcosa? –

1

se a 32 bit in applicazioni a 64 bit del sistema operativo (l'applicazione che si sono installati in [file di programma (X86)] utilizzare il seguente C: \ Windows \ SysWOW64 \ odbcad32.exe

altrimenti a 64 bit e applicazioni sistema operativo a 64 bit di utilizzare il seguente C: \ Windows \ System32 \ odbcad32.exe

altrimenti si otterrà un errore del tipo "non corrispondente architettonica"

Spero che questo vi farà risparmiare il giorno di qualcuno :)

Problemi correlati