【问题标题】:advantage ole db provider 10.0.0.3 adsoledb for 64 bit - can't get it to work优势 ole db provider 10.0.0.3 adsoledb for 64 bit - 无法让它工作
【发布时间】:2010-08-06 20:21:17
【问题描述】:

试图让 Advantage OLE DB Provider 的本地服务器版本在 64 位 Windows 7 计算机上工作。安装了 64 位版本 10.00.0.3 版本并复制了我的应用程序。从 app 目录注册 adsoledb64.dll。我什么都得不到。也不写日志。我是否必须在 64 位机器上编译应用程序?非常困惑和沮丧。

【问题讨论】:

  • 您能否详细说明“一无所获”?有错误吗?您的应用程序是否成功加载提供程序?连接有错误吗?还是它连接后没有获取数据?
  • 我没有收到任何写入 ads_err.dbf 的内容,我的 .net 应用程序也没有任何错误。我确实在 32 位机器(编译的 AnyCPU)上测试了该应用程序,在那里工作正常。 oledb 提供程序的优势在于 32 位安装和 64 位安装(只能安装在 64 位机器上)。我的应用程序本身是在 32 位工作站上编译的,并复制(及其众多 dll)到我用于测试的 64 位机器上。想知道我是否需要在错误的地方注册更多的 dll 或 dll。如果有人有这个工作,我会很乐意提供建议。也许我需要将一些 try catch 写入应用程序以进行连接。
  • 对于我想在 64 位上运行的编译,我有优势连接库编译为 x64,但应用程序中的一些其他库只能为 AnyCPU 或 x86 编译,所以它有点混合...总共有 6 个库。
  • 如果您可以隔离故障发生的位置以帮助我们了解建议的内容,这将有所帮助。我不清楚您是否成功连接。您是否有一些可能会吞噬异常的 try/catch 块?我假设您使用的是 OleDbConnection 对象;这是真的吗?
  • 是的,使用 OleDbConnection 对象。我确实有一个连接问题。当我把它拿出来时,我的应用程序确实会在 Windows 7 上崩溃,会寻找问题类型的错误:) 但仍然没有写入错误文件。我不认为提供程序字符串与 x64 有任何差异。不确定是否有退货我可以检查...我已经检查了 devzone 但那里没有大量示例。它在我的 32 位机器上运行良好,我没有对其进行过多修改。想知道我是否应该尝试在 64 位机器上安装 Visual Studio(如果我能获得许可)看看这是否会给我一个线索?

标签: advantage-database-server


【解决方案1】:

根据我从 cmets 收集到的信息,您的应用程序听起来好像是作为 32 位应用程序运行的。如果是这样,它将无法加载 64 位版本的 OLE DB 提供程序。 conn.Open(); 调用可能会导致如下错误:

The 'Advantage.OLEDB.1' provider is not registered on the local machine.

对此进行测试的一种方法是安装 32 位版本的提供程序以查看它是否有效。

或者,您可以考虑使用Advantage .NET Data Provider 而不是 OLE DB 提供程序。从长远来看,使用本机数据提供程序而不是通过 OLE DB 可能会更简单。

【讨论】:

  • 确实以带有 adv 的应用程序和 lib 运行为 x86 并且它工作正常。它确实认为因为我在虚拟机上我正在做服务器所以它抛出了一个错误(5185)。您可以在 ads.ini 中设置设置来解决这个问题。是的,我认为纯 64 应用程序仍然很少见……所以现在在 64 机器上运行 32 对我来说还可以。我也确实切换到了 .net 提供商。感谢您的帮助!
  • @thomcat:很高兴你能成功。感谢您报告您的发现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-04
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多