Issue:
Data Transformation Services packages (DTS) that use DB2 as an ODBC source, fail when the execution environment is upgraded to 64-Bit Windows Server 2008, Windows 7 etc.
Error Message:
The error logs of the DTS would show the following message –
Step Error Source: Microsoft OLE DB Provider for ODBC Drivers
Step Error Description:[Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application
Step Error code: 80004005
Step Error Help File:
Step Error Help Context ID:0
Cause:
DTS are 32-bit applications and need the Data Source Names (DSN) based on 32-bit ODBC drivers. A 64-bit Operating System points to the 64-bit drivers by default and uses the ODBC Data Source Administrator at –
C:WINDOWSsystem32odbcad32.exe
The standard DSN creation scripts used by system administrators might use the 64-bit version because it is at the default location.
The 32-bit ODBC Data Source Administrator is in –
C:WINDOWSSysWOW64odbcad32.exe
The required DSN should be created again using this 32-bit version and it will update the Windows registry or the environment path variables appropriately.
Fix:
Start the 32-bit ODBC Data Source Administrator Wizard from the SYSWOW64 directory.
C:WINDOWSSysWOW64odbcad32.exe
Go to System DSN tab and click on Add.
Select the available IBM ODBC driver.
Give a DSN name.
Confirm the action.
The last message box verifies if you want to overwrite the existing DSN alias in DB2CLI.INI file. This file is at the below location on a 64-bit machine –
C:ProgramDataIBMDB2DB2_V95db2cli.ini
Clicking on No will abort the wizard. Click on Yes to continue. The timestamp for the INI file would be updated. If you are just recreating an existing alias as in the example above, the file content would appear to be the same, though the ODBC Data Source Administrator Wizard will create or modify the appropriate registry and environment variable entries.
Summary:
Microsoft maintains a backward compatibility feature known as WOW64 (Windows-32-On-Windows-64) that lets older 32-bit applications to run smoothly. This is implemented by maintaining a separate copy of the necessary 32-bit run time resources (configuration utilities, drivers, registry settings, other DLLs etc.) in different folders/locations.
This example refers to an ODBC DSN for a DB2 server but the concept could be relevant in other such scenarios where there is a conflict between 32 and 64-bit drivers.
Reference:
How to point to 32-bit IBM DB2 ODBC driver on 64-bit Microsoft system.
http://www-01.ibm.com/support/docview.wss?uid=swg21384435