ODBC .NET 32位和64位

时间:2014-03-31 23:37:16

标签: .net odbc 64-bit informix

请帮助我!

我有使用Platform Target = x86编译的WindowsService。此服务适用于ODBC驱动程序。 在服务器上我有32位和64位ODBC管理器。 在32位ODBC驱动程序上,我安装了Informix驱动程序和系统DSN = TestDb。 在64位 - 没有安装。没有DSN,没有司机。 当我尝试通过Windows服务运行查询时,它返回错误:

  

错误[IM014] [Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配

所以我使用Target Platform = x64编译了我的服务并在此服务器上运行。尝试使用相同的DSN = testDb进行相同的查询。我收到了错误:

  

错误[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序

我找到了ODBC Explorer的第三部分应用程序,并尝试运行查询,它工作正常。

我不确定我是否可以为ODBC 64bit安装Informix驱动程序,我希望在所有情况下都能使我的服务工作。

在Code中我使用OdbcConnection类。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我发现了这个问题。 Thx,@ HansPassant,您的链接让我思考正确。我检查了服务器上的任务管理器我的Windows服务的过程。它作为64位应用程序工作!我在我的机器上检查了它,它可以作为32位应用程序。 (在任务管理器中,它显示为' ... exe * 32'进程)。 所以我在这里Forcing a .Net Windows service to run as 32-bit on a 64-bit machine找到如何让Windows启动我的应用程序作为32位服务。现在我的WindowsService使用32位ODBC并进行查询。

谢谢。

答案 1 :(得分:0)

ODBC数据源管理员与32位和64位驱动程序不同 ODBC 64位驱动程序使用c:\​​ windows \ system32 \ odbcad32.exe
并为 ODBC 32位驱动程序使用c:\​​ windows \ sysWOW64 \ odbcad32.exe