2014-03-25 68 views
0

我正在编写一个应用程序来与VB.net中的Progress DataBase接口。我的开发机器是32位Win 7计算机。我为我需要使用的数据库配置了一个System DSN。由于它在32位机器上是32位DSN。在使用ODBC DSNs和32位vs 64位时遇到问题

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

我试着编译x86而不是AllCPUs,但我仍然收到错误。一些错误在下面。

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

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

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

 
DSN Connection String, Target CPU: AllCPUs, 32 Bit Machine : Runs Fine 
DSN Connection String, Target CPU: AllCPUs, 64 Bit Machine : Error [IM014] 
DSN Connection String, Target CPU: x86 , 32 Bit Machine : Runs Fine 
DSN Connection String, Target CPU: x86 , 64 Bit Machine : Error [HY000] 
                    [HYC00] 
                    [08S01] 
                    [08S01] 
                    [08S01] 
                    [IM006] 
'Yes all of those errors on the last one are from one connection attempt. 

+0

你有抬头的错误代码?根据应用程序是32位还是64位,您在64位系统上获得不同代码的事实表明实际问题可能不同。 – jmcilhinney

+0

是的,我查了错误。那么它会有什么建议呢?我的连接字符串不能简单得多。 'DSN = blackring; uid = demo; pwd = demo'所有端口和其他东西都在DSN中设置,当我点击测试连接时,它们工作正常。 – PsychoData

+0

这也是关于连接字符串中的DSN和DSN的使用。如果你认为所有的数据库供应商都是第三方产品,那么oracle,Mssql,mysql,PostGres和其他所有的产品都将成为主题。 – PsychoData

回答

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-coexist

微软允许32个或64位驱动程序。如果你有office32,那么你有32位驱动程序。第二个链接显示了各种各样的工作。

问候

伊格纳西奥