Saturday, September 13, 2008

SSIS: Using UniData ODBC Driver on Windows Server 2003 x64

Problem
IBM does not provide a 64-bit ODBC driver for UniVerse or UniData so although you can install the driver on a 64-bit Windows Client PC, you cannot see it in the ODBC driver's list in ODBC administration in the control panel.

Cause
IBM don't supply a 64-bit version of the ODBC driver for UniVerse or UniData

Solution
The ODBC administrator accessible from Control Panel on a 64-bit Windows machine is the 64-bit version, so the UniVerse ODBC driver will not show up in the list of the available drivers.
You can still use the 32-bit version of the driver on a 64-bit version of Windows, you just need to make sure that you use the 32-bit ODBC administration console rather than the 64-bit one when dealing with the DSN.


64-bit Windows has the familiar: C:\Windows\System32 directory.

it also has a C:\Windows\SysWOW64 directory that serves a similar function as a repository
for system files.


The assumption that most people would make is that the 32-bit system files would go in the System32 directory and the 64-bit system files would go in the SysWOW64 directory. However, this is not the way it works.


Some things in 64-bit Windows are not exactly as they appear on the surface:.

The\windows\system32\odbcad32.exe program is really the 64-bit ODBC Administrator, and the \windows\SysWOW64\odbcad32.exe is the 32-bit ODBC Administrator.

If you use the odbcad32.exe in the SysWOW64 folder you will be able to define DSNs with our 32bit driver.

Reference taken at : IBM Support

Additional Steps

After adding the UniData ODBC Driver and realize the package unable to run, the next step is the solution to run the package successfully.

In your Integration Services Project, go to
Project>[Project Name] Properties...

solutionproperties

Go to Configuration Properties Treeview > Debugging, change Run64BitRunTime at Debug Option Section and change value to 'False'

projectproperty

The reason why we need to set the Run64BitRunTime to 'False' as the UniData ODBC Driver was built on 32 bit development. If the Run64BitRunTime set to 'True' then the package would have error due to missing driver. The UniData ODBC Driver is stored in 32 bit Data Source (ODBC therefore its required to set the Run64BitRunTime to 'False' in order to detect and run the package successfully.

No comments: