代码之家  ›  专栏  ›  技术社区  ›  tvanfosson

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

  •  26
  • tvanfosson  · 技术社区  · 17 年前

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

    FAQ

    What software exists for bridging a 64-bit ODBC app to a 32-bit ODBC driver on windows?

    3 回复  |  直到 9 年前
        1
  •  41
  •   tvanfosson    17 年前

    事实证明,您可以使用以下命令创建32位ODBC连接 C:\Windows\SysWOW64\odbcad32.exe 。我的解决方案是将32位ODBC连接创建为系统DSN。从那以后,我仍然无法连接到它。NET无法查找它。在进行了大量徒劳的搜索后,找到了如何让OdbcConnection类在中查找DSN ,我偶然发现了一个网站,建议修改注册表以解决另一个问题。

    我最终直接在下面创建了ODBC连接 HKLM\Software\ODBC

    在手动创建条目后,我启动了windows服务,一切都很顺利。

        2
  •  2
  •   Parag Vyas    13 年前

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

        3
  •  2
  •   Baddack    10 年前

    这些答案中有很多都很旧,所以我想我会更新一个我认为有帮助的解决方案。

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

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

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