请帮助我!
我有使用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
类。有什么想法吗?
答案 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