Les pilotes ODBC 32 bits ne sont pas compatibles avec Java 64 bits / 32-bit ODBC drivers are not compatible with 64-bit Java

Produit concerné / Related product

JMapVersions5.0, 6.0, 6.5

Jump to English version

 Problème

Par défaut, il n'y a pas de pilote ODBC 64 bits d'installé dans les systèmes d'exploitations de Microsoft.  Donc, lorsqu'une connexion ODBC est créée à l'aide de l'interface "Sources de données (ODBC)" des outils d'administration, ces connexions ODBC sont des version 32 bits qui ne sont accessibles que depuis des applications 32 bits.  Donc, si JMap a été installé à l'aide d'une JVM 64 bits, ces connexions ODBC ne pourront pas être utilisées car elles ne sont pas compatibles avec Java 64 bits.

Solution

Installation:

Les pilotes ODBC 64 bits sont disponible sur le site de Microsoft : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255

Un fois installé, Il faut que l’ODBC soit ajouté dans les ODBC 64 bits :

  1. La version 32 bits du fichier Odbcad32.exe se trouve dans le dossier %systemdrive%\Windows\SysWoW64
  2. La version 64 bits du fichier Odbcad32.exe se trouve dans le dossier %systemdrive%\Windows\System32


À bien noter que la version 32 bits est dans SysWoW64 et la version 64 bits est dans System32.

Limitations:

Le pilote ODBC ne semble pas très bien fonctionner. La connexion vers une BD Access peut bien se faire mais des erreurs peuvent survenir lors de l'extraction des éléments. Par exemple:  "Invalid Buffer Length" ou "Longueur de chaîne ou de mémoire tampon non valide". Ces erreurs semble aléatoires, en effectuant la même requête 10 fois, une erreur pourrait survenir à l'extraction de dixième rangée, une autre fois à la cinquantième, puis les 8 autres fois l'extraction pourrait se faire sans erreur. L'erreur est lancée par le pilote ODBC et du coté de JMap il ne semble pas avoir un moyen de la contourner.

Une alternative est d'exporter les données dans une autre base de données, par exemple, SQL Server, MySQL, etc. Une autre alternative est d'utiliser MySQL Express pour faire le pont entre Access et JMap, mais cette alternative est plutôt complexe et requiert de la maintenance puisque des vues et objets doivent être créés dans SQL Server en fonction des données à interroger, donc si cette structure change, la configuration de SQL Server devra aussi être changée.

Note : JMap 6.5 inclut un pilote JDBC pour Microsoft Access. Dans ce cas, aucune source ODBC n'est requise.


English version

Problem

By default, there is no 64-bit ODBC driver installed in the Microsoft's operating systems. So when ODBC connection is created using the "Data Sources (ODBC)" interface administration tools, these ODBC connections are 32-bit version which are only available from 32-bit applications. So if JMap was installed using a JVM 64 bits, the ODBC connections can't be used because they are not compatible with Java 64 bits. 

Solution

Installation:

The 64-bit ODBC driver is available at Microsoft website: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=13255

Once installed, the ODBC must be added at 64-bit ODBC :

  1. The 32 bits version of Odbcad32.exe file is located at %systemdrive%\Windows\SysWoW64 folder

  2. The 64 bits version of Odbcad32.exe file is located at %systemdrive%\Windows\System32 folder


Note that the 32 bits version is in SysWoW64 and the 64 bits version is in System32.

Limitations:

Unfortunately, the ODBC driver does not seem to work very well. The connection to an Access database may work well but errors can occur when extracting elements. For example: Invalid Buffer Length. These errors seem random, performing 10 times the same request, an error may occur in the extraction of the tenth row, again at the fiftieth, then other 8 times extraction could be done without error. The error is initiated by the ODBC driver and at JMap side it does not seem to be any way around it. 

Therefore an alternative is to export to another data base, for example, SQL Server, MySQL, etc. Another alternative is to use MySQL Express to bridge the gap between Access and JMap, but this alternative is rather complex and requires maintenance as views and objects must be created in SQL Server according to the data query, so if that structure change, the SQL Server configuration must also be changed.

Note: JMap 6.5 includes a JDBC driver for Microsoft Access. In this case, no ODBC source is required.