3
votes

I have an SSIS package that needs to use ODBC to connect to an Informix data source. It runs fine on my 64-bit Win7 development box but blows up on 64-bit Windows Server 2008 with the following error message:
The specified DSN contains an architecture mismatch between the Driver and Application.

I can see the informix drivers when I use odbcad32.exe in %windir%/SysWOW64/ and have created an ODBC connection there. I cannot see them when I use odbcad32.exe in %windir%/System32. The Google machine says the error message I'm seeing comes when I've created the ODBC connection using the wrong ODBC administrator engine. I'm using the IBM Informix SDK 3.70.

Maybe my Google-fu is weak, but I can't find anything useful on how to get Windows Server 2008 to allow me to see the 32-bit Informix drivers in the ODBC administrator engine from System32.
Anyone have any ideas/insights?

1

1 Answers

4
votes

Two things to keep in mind, you have the ODBC drivers/configuration thing (odbcad32.exe) in the 32/64 bit space but you'll also have SSIS (dtexec.exe) also existing in the 32/64 bit space.

As I read it, you have installed the 32 bit driver on the server and created the 32 bit DSN (which despite the backwards sounding name is the one found in %windir%/SysWOW64/).

The trick now is to run your packages in 32 bit mode. If you are using SQL Agent, the SQL Server Integration Services job step has a checkbox for 32 bit mode. That only works for the SQL Agent though. If you are running it from the command line, or clicking it via the gui, you'll need to start with the correct exe.

32 bit

C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files (x86)\Microsoft SQL Server\90\DTS\Binn\DTExec.exe

64 bits

C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\110\DTS\Binn\DTExec.exe
C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTExec.exe