ODBC .NET 32位和64位

问题描述:

请帮帮我!ODBC .NET 32位和64位

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

ERROR [IM014] [Microsoft][ODBC Driver Manager] The specified DSN contains an architecture mismatch between the Driver and Application

所以我编译服务与目标平台= x64和该服务器上运行。使用相同的DSN = testDb尝试相同的查询。我得到的错误:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

我发现第三方应用程序的ODBC资源管理器,并尝试运行查询它工作正常。

我不确定是否可以安装用于ODBC 64位的Informix驱动程序,并且我希望使我的服务在所有情况下都能正常工作。

在代码中,我使用OdbcConnection类。有任何想法吗?

+0

可能重复的[指定的DSN包含一个错配的架构司机和应用程序之间。 JAVA](http://*.com/questions/8895823/the-specified-dsn-contains-an-architecture-mismatch-between-the-driver-and-appli) –

+0

你确定你定义了系统DSN'TestDB'吗?使用'c:\ windows \ sysWOW64 \ odbcad32.exe'(它是32位ODBC数据源管理员)?您是否使用“应用和测试连接”按钮进行测试? –

+0

@HansPassant我不认为这是我的问题。我无法在64位ODBC上安装DSN,因为没有Informix驱动程序。在我的情况下,我的32位服务无法使用32位ODBC。 –

我发现了这个问题。 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并执行查询。

谢谢。

对于32位和64位驱动程序,ODBC Data Source Administrator是不同的。
ODBC 64位驱动器使用C:\ Windows \ System32下\ odbcad32.exe的

ODBC 32位驱动器使用C:\ Windows \ SYSWOW64 \ odbcad32.exe的的