【问题标题】:SQL Server DSN-Less ODBC Specify 32 bit DriverSQL Server DSN-Less ODBC 指定 32 位驱动程序
【发布时间】:2018-04-21 18:35:08
【问题描述】:

我正在使用最近更新到 .NET 4.5 的旧应用程序。该应用程序一直在使用 DSN ODBC 连接。但是,在应用程序的情况下,它是从网络驱动器上的单个位置访问的,因此要求 DSN 没有意义,并且它可以简化部署和更新以使用无 DSN 连接字符串.我正在做一个基本的字符串:

Driver={SQL Server}; Server=; Database=; UID=; PWD=

我遇到的问题是应用程序编译为 32 位,但可以在 32 位或 64 位机器上使用。在 64 位机器上出现此错误:

指定的 DSN 包含驱动程序之间的体系结构不匹配 及应用

这实质上意味着它正在尝试将 64 位驱动程序用于 32 位应用程序。这很容易处理,只是 SQL Server 的驱动程序名称对于 32 位和 64 位似乎相同。那么如何才能在连接字符串中只指定 32 位驱动呢?

【问题讨论】:

  • This 应该有所帮助,即使它来自 Java perspactive
  • 是的,这就是我在搜索中发现的。但是,这是用于设置 DSN 连接的 ODBC 实用程序。我想要实现的是无 DSN 连接,这意味着我可以完全绕过该实用程序。我在帖子中的连接字符串有效,但似乎不允许我指定位级别,在本例中为 32 位。
  • 这是一篇讨论无 DSN 连接字符串的文章:databasejournal.com/features/mssql/article.php/1491011/…
  • @JarrodChristman,对于 32/64 位,无需更改 DSN 连接字符串;应自动使用适当的 ODBC 体系结构。我只能通过 DSN 连接(例如 64 位 DSN 和 x86 应用程序)重现拱形不匹配错误。您使用的是System.Data.OdbcADODB 还是其他?如果是 ADODB,ActiveX 是什么版本的?
  • 请确保您从不安装 64 位驱动程序版本。

标签: sql-server odbc database-connection 32-bit dsn


【解决方案1】:

"要管理连接到 64 位平台下的 32 位驱动程序的数据源,请使用 c:\windows\sysWOW64\odbcad32.exe。要管理连接到 64 位平台的数据源驱动程序,使用 c:\windows\system32\odbcad32.exe。在 64 位 Windows 8 操作系统的管理工具中,有 32 位和 64 位 ODBC 数据源管理器对话框的图标。Read more "

如果您使用 64 位 odbcad32.exe 配置或删除连接到 32 位驱动程序的 DSN,您将收到以下错误消息:

指定的 DSN 包含驱动程序和应用程序之间的体系结构不匹配

要解决此错误,请使用 32 位 odbcad32.exe 配置或删除 DSN。

参考文献


旁注:确保所有引用 Copy Local 属性设置为 True,即使是系统程序集。我认为问题可能出在 GAC 中保存的程序集位置,因此在本地复制程序集时可能会解决该问题

【讨论】:

  • 谢谢,但我认为人们不理解这是为了无 DSN 连接。这意味着我将连接字符串直接传递给 .NET 的 ODBC 并完全绕过您正在谈论的 odbc 配置工具。同样,在这个无 DSN 的连接字符串中,我引用了预安装的 32 位和 64 位 SQL Server ODBC 驱动程序。因此我的问题。这与使用什么工具进行配置或安装什么驱动程序无关(因为 Windows 默认安装了这两个位版本)。
  • 请记住,如果我确实使用基于 DSN 的连接字符串,那么一切正常。实际上,如果我有两个同名的 DSN 和一个 32 位和 64 位版本,则基于 DSN 的连接字符串会自动选择正确的一个。我要做的是连接字符串绕过任何 DSN 并且完全独立。
  • 这样做的想法是部署这样一个程序要容易得多,因为 exe 只驻留在整个组织的一个位置。
  • @JarrodChristman 在项目属性窗口中,确保所有引用 Copy Local 属性设置为 True,即使是 System 程序集。我认为问题可能出在 GAC 中保存的程序集位置,因此在本地复制程序集时可能会解决该问题
  • @JarrodChristman 你也可以看看stackoverflow.com/questions/8895823/… 有很多答案可能会给你一些想法
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2010-11-11
  • 2015-12-23
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 2014-02-21
  • 1970-01-01
相关资源
最近更新 更多