Come posso utilizzare un driver ODBC a 32 bit sul server a 64 bit 2008 quando l'installatore non crea un DSN standard?

StackOverflow https://stackoverflow.com/questions/1134827

Domanda

Ho riscontrato un problema con alcuni software di terze parti che utilizziamo per tenere traccia dell'utilizzo della licenza software nei nostri laboratori informatici. Di recente abbiamo migrato l'app al server a 64 bit 2008 dopo aver ricevuto le assicurazioni dall'azienda che era compatibile e eseguendo alcuni test preliminari che hanno dimostrato che l'app ha funzionato nell'ambiente a 64 bit. Sfortunatamente la persona che ha fatto i test non ha testato la funzionalità di un paio di app che ho affidamento sull'accesso ai dati per eseguire sia i dati che elaborano i dati per produrre alcuni rapporti.

Si scopre che l'applicazione non ha un driver ODBC a 64 bit per accedere ai suoi dati interni e non può utilizzare un driver ODBC SQL SQL a 64 bit per esportare i dati su SQL Server. Include e installa un driver ODBC a 32 bit, ma lo installa come fonte di dati utente, non un'origine dati di sistema, il che significa che il mio servizio Windows che esegue la raccolta live non è in grado di trovarlo. Inoltre, non sono in grado di creare un DSN di sistema poiché la console di amministrazione delle origini dati non riesce a trovare il driver installato.

La mia domanda è come posso configurare un'origine dati per questa connessione a cui posso accedere da un servizio di Windows di C#/..

Da quando ho capito un modo per farlo, fornirò la mia soluzione come risposta (in linea con il FAQ su come rispondere alla tua domanda).

Simile a:Quale software esiste per colmare un'app ODBC a 64 bit su un driver ODBC a 32 bit su Windows?

È stato utile?

Soluzione

Si scopre che è possibile creare connessioni ODBC a 32 bit utilizzando C:\Windows\SysWOW64\odbcad32.exe. La mia soluzione era quella di creare la connessione ODBC a 32 bit come sistema DSN. Questo non mi ha ancora permesso di connettermi ad esso poiché .NET non poteva cercarlo. Dopo una ricerca significativa e infruttuosa per trovare come convincere la classe ODBCConnection per cercare il DSN nel posto giusto, Mi sono imbattuto in un sito Web che mi ha suggerito di modificare il registro per risolvere un problema diverso.

Ho finito per creare la connessione ODBC direttamente sotto HKLM\Software\ODBC. Ho guardato nella chiave Syswow6432 per trovare i parametri che sono stati impostati utilizzando la versione a 32 bit dello strumento di amministrazione ODBC e l'ho ricreato nella posizione standard. Non ho aggiunto una voce per il driver, tuttavia, in quanto non è stato installato dal programma di installazione standard per l'app.

Dopo aver creato la voce (a mano), ho acceso il mio servizio Windows e tutto era felice.

Altri suggerimenti

Apri IIS Manager, seleziona i pool di applicazioni, seleziona il pool di applicazioni che si utilizza, fai clic su Impostazioni avanzate nel menu a destra. In generale, imposta "Abilita applicazioni a 32 bit" su "true".

Molte di queste risposte sono piuttosto vecchie, quindi ho pensato di aggiornare con una soluzione che penso sia utile.

Il nostro problema era simile alle operazioni OP, abbiamo aggiornato le macchine XP a 32 bit a Windows 7 a 64 bit e il nostro software applicativo che utilizza un driver ODBC a 32 bit ha smesso di poter scrivere sul nostro database.

Si scopre che ci sono due gestori di origine dati ODBC, uno per 32 bit e uno per 64 bit. Quindi ho dovuto eseguire la versione a 32 bit che si trova in C: Windows syswow64 odbcad32.exe. All'interno del gestore di origine dati ODBC, sono stato in grado di andare alla scheda DSN del sistema e aggiungere il mio driver all'elenco utilizzando il pulsante Aggiungi. (È possibile controllare la scheda Driver per visualizzare un elenco dei driver che puoi aggiungere, se il driver non è in questo elenco, potrebbe essere necessario installarlo).

Il prossimo numero era il software che abbiamo eseguito è stato compilato per utilizzare "qualsiasi CPU". Ciò vedrebbe che il sistema operativo era a 64 bit, quindi avrebbe esaminato le origini dati ODBC a 64 bit. Quindi ho dovuto forzare il programma a compilare come un programma X86, che poi gli dice di guardare le fonti di dati ODBC a 32 bit. Per impostare il tuo programma su X86, in Visual Studio, vai alle proprietà del progetto e nella scheda Build nella parte superiore c'è un elenco a discesa della piattaforma e scegli X86. Se non hai il codice sorgente e non è possibile compilare il programma come X86, potresti essere in grado di fare clic con il pulsante destro del mouse sul programma .exe e andare alla scheda Compatibilità e scegliere una compatibilità che funzioni per te.

Una volta aggiunti i driver e il programma che indicava i driver giusti, tutto funzionava come usava. Spero che questo aiuti chiunque lavori con software più vecchi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top