Whilst doing the datacenter migration, we decided to upgrade all of our servers at the same time. It was less of a migration, and more of a new install, new location. We upgraded from Windows 2003 x86 platforms, to Windows 2008 x64 platforms. During the migration, we’ve stumbled across some issues…
One of the ones that went a week without notice was that Microsoft’s JetDB doesn’t work well x64 platforms. We had a scheduled task running a .NET application which depended on the JetDB libraries. The application opened a CSV file, extracted data, and pushed to a database. The JetDB libraries were used to read the CSV file.
The scheduled task had been running without errors, however it appears that the .NET error wasn’t being seen by the Task Scheduler service, and it was obvious the program was failing (1 second execution time, compared to the 30 mins before).
On manual execution, we’d get the error:
The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine.
Looking around, the JetDB files are installed on 2008 x64, but some parts apparently just don’t work on the x64 platform.
Resolving this issue is fairly simply in our case because we have the source code for all the applications impacted. Simply edit the project properties by right clicking on the project, selecting properties. Then going to the build tab. On the build tab is a “Platform target” option. This option forces the compilation between, any, x86, and x64. Selecting x86, and rebuilding the project resolves the issue.
If you change the build configurations between release and debug, you must remember to change this option in both configuration options, otherwise it won’t help if you deploy using release, and changed debug.