26

我遇到了一些第三方软件的问题,我们使用这些软件来跟踪我们计算机实验室的软件许可证使用情况。我们最近将应用程序迁移到 64 位 Server 2008,因为该公司保证它是兼容的,并运行了一些初步测试,表明该应用程序在 64 位环境中工作。不幸的是,进行测试的人没有测试我拥有的几个应用程序的功能,这些应用程序依赖于访问数据来对数据进行实时和后处理以生成一些报告。

事实证明,该应用程序没有 64 位 ODBC 驱动程序来访问其内部数据,并且不能使用 64 位 SQL Server ODBC 驱动程序将其数据导出到 SQL Server。它确实包含并安装了一个 32 位 ODBC 驱动程序,但它将它安装为用户数据源,而不是系统数据源,这意味着我运行实时集合的 Windows 服务无法找到它。我也无法创建系统 DSN,因为数据源管理控制台找不到已安装的驱动程序。

我的问题是如何为此连接配置数据源,我可以从系统帐户下运行的 C#/.NET Windows 服务访问该数据源?

由于我已经找到了一种方法,因此我将提供我的解决方案作为答案(与关于如何回答您自己的问题的常见问题解答保持一致)。

类似于: 有什么软件可以将 64 位 ODBC 应用程序桥接到 Windows 上的 32 位 ODBC 驱动程序?

4

3 回答 3

41

事实证明,您可以使用C:\Windows\SysWOW64\odbcad32.exe. 我的解决方案是创建 32 位 ODBC 连接作为系统 DSN。这仍然不允许我连接到它,因为 .NET 无法查找它。在寻找如何让 OdbcConnection 类在正确的位置查找 DSN 之后,我发现了一个网站,该网站建议修改注册表以解决​​不同的问题。

我最终直接在HKLM\Software\ODBC. 我在 SysWOW6432 键中查找了使用 32 位版本的 ODBC 管理工具设置的参数,并在标准位置重新创建了它。但是,我没有为驱动程序添加条目,因为该应用程序的标准安装程序也没有安装该条目。

创建条目(手动)后,我启动了我的 Windows 服务,一切都很开心。

于 2009-07-16T00:31:21.123 回答
2

打开 IIS 管理器,选择应用程序池,选择您正在使用的应用程序池,单击右侧菜单中的高级设置。在常规下,将“启用 32 位应用程序”设置为“真”。

于 2013-01-30T10:37:42.747 回答
2

很多这些答案都很老了,所以我想我会用一个我认为有用的解决方案来更新。

我们的问题类似于 OP,我们将 32 位 XP 机器升级到 64 位 windows 7,并且使用 32 位 ODBC 驱动程序的应用程序软件停止写入我们的数据库。

原来,有两个 ODBC 数据源管理器,一个用于 32 位,一个用于 64 位。所以我必须运行 C:\Windows\SysWOW64\odbcad32.exe 中的 32 位版本。在 ODBC 数据源管理器中,我可以转到系统 DSN 选项卡并使用添加按钮将我的驱动程序添加到列表中。(您可以检查驱动程序选项卡以查看您可以添加的驱动程序列表,如果您的驱动程序不在此列表中,那么您可能需要安装它)。

下一个问题是我们运行的软件被编译为使用“任何 CPU”。这将看到操作系统是 64 位的,因此它会查看 64 位 ODBC 数据源。所以我不得不强制程序编译为 x86 程序,然后告诉它查看 32 位 ODBC 数据源。要将您的程序设置为 x86,请在 Visual Studio 中转到您的项目属性,然后在顶部的构建选项卡下有一个平台下拉列表,然后选择 x86。如果您没有源代码并且无法将程序编译为 x86,则可以右键单击程序 .exe 并转到兼容性选项卡并选择适合您的兼容性。

一旦我添加了驱动程序并且程序指向正确的驱动程序,一切都像以前一样工作。希望这可以帮助任何使用旧软件的人。

于 2015-11-17T19:31:55.967 回答