0

我正在编写一个应用程序来与 VB.net 中的 Progress 数据库交互。我的开发机器是一台32位的Win 7电脑。我为需要使用的数据库配置了系统 DSN。由于它在 32 位机器上,因此它是 32 位 DSN。

应用程序在我的本地计算机上运行良好,当我尝试将它带到我们的一台 64 位机器时出现问题。现在 64 位机器上似乎安装了 32 位驱动程序(我打开C:\Windows\SysWow64\odbcad32.exe它,根据研究,应该显示我的所有 32 位系统 DSN 和所有用户 DSN)和一个看似相同的 DSN(以相同的方式命名)存在于系统 DSN 中。

我尝试编译 forx86而不是AllCPUs,但仍然出现错误。一些错误如下。

有关如何解决此问题以使其在 64 位和 32 位计算机上运行的任何建议?有没有办法双重确保 64 位机器在 32 位 DSN 上工作?

我对错误 [IM014] 的理解是程序在 64 位机器上查找 DSN,但无法使用它,因为它是 32 位 DSN。

第二个错误的大部分错误都在这里。所有 08S01 都是“通信链路故障”,IM006 是“驱动程序的 SQLSetConnectOption 失败”,显然 HY000 有大约 20 种不同的含义。

DSN 连接字符串,目标 CPU:AllCPU,32 位机器:运行良好
DSN 连接字符串,目标 CPU:AllCPU,64 位机器:错误 [IM014]
DSN 连接字符串,目标 CPU:x86,32 位机器:运行良好
DSN 连接字符串,目标 CPU:x86,64 位机器:错误 [HY000]
                                                                   [HYC00]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [08S01]
                                                                   [IM006]
'是的,最后一个错误中的所有错误都来自一次连接尝试。

4

2 回答 2

1

请参阅以下链接:

https://www.simple-talk.com/sql/database-administration/getting-data-between-excel-and-sql-server-using-odbc--/

http://social.msdn.microsoft.com/Forums/en-US/abf34eea-1029-429a-b88e-4671bffcee76/why-cant-32-and-64-bit-access-database-engine-aceoledb-dataproviders-共存

Microsoft 允许使用 32 位或 64 位驱动程序。如果你有office32,那么你有32位驱动程序。第二个链接显示了一种解决方法。

问候

伊格纳西奥

于 2014-04-22T21:38:15.983 回答
0

我通过在 Visual Studio 2019 的编译选项中的 Target CPU = x64 中编译我的 vb.net 代码解决了这个问题。现在完美运行。

于 2020-09-25T11:48:14.967 回答