如果安装程序未创建标准DSN,如何在64位Server 2008上使用32位ODBC驱动程序?

tva*_*son 26 .net registry odbc 32bit-64bit

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

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

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

由于我已经想出办法,我会提供我的解决方案作为答案(与常见问题解答如何回答你自己的问题).

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

tva*_*son 41

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

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

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