这个让我疯狂,但我找到了一个我在网上其他地方找不到的hacky解决方案。
解决方案:将目标CPU更改为x86以避免32位/ 64位的已知ODBC问题。
我不知道如何修复它,因此您可以使用AnyCPU或64位。只要我使用ODBC,目前我似乎被困在32位。奇怪的是运行实际代码的外部库是使用AnyCPU编译的。但消费项目需要在X86中。
我不会将此标记为答案,因为有太多悬而未决的问题。
关于将事情置于上下文中的特定问题的背景:
我有一个使用我构建的外部库的项目。这个库仍然使用ADODB很多。我的项目做了很奇怪的事情所以我从头开始重新构建它,保留尽可能多的默认设置以帮助调试它。
好吧,外部库中的ADODB.Connection.Open()函数失败并出现上述错误。旧项目运作良好。新项目引发了错误。区别在于目标CPU。
我一直看到64位对比32位DSN的引用,我知道这些(据说)但我的DSN更少。
我的外部库被编译到AnyCPU,我还有其他使用它的项目也在AnyCPU中编译但我认为我没有在其他项目中遇到ADODB代码所以从未遇到过它。
答案 0 :(得分:0)
听起来我们遇到了类似的问题,但是我没有使用ODBC,AnyCPU似乎对我有用。它只是x64有问题。如果我发现任何事情,我会告诉你的。
答案 1 :(得分:0)
使用像OleDb这样的COM类型提供程序的ODBC不可用,因为COM仅在32位模式下受支持。