系统 DSN 与用户 DSN

wal*_*pus 7 windows-7 64-bit 32-bit odbc dsn

我公司的每一台新电脑都要经历同样的软件安装过程;一个程序特别需要通过 ODBC 访问 MS SQL Server 数据库。然后,同一台计算机上的多个域用户在不同时间使用该程序。

在 Windows XP 机器上,我只是将 ODBC 连接设置为System DSN。无论哪个用户登录,连接都会为他工作,我的工作就完成了。

最近,我们得到越来越多的 Windows 7 机器,这种方法似乎不再适用了。该程序无法识别我在System DSN 中设置的连接,但它可以识别User DSN 中的连接。我遇到的问题是,每次用户第一次登录计算机时,我都会接到一个电话,需要安装他或她自己的 DSN。

这适用于 XP 而不适用于 7 的原因是什么?我从一开始就做错了吗?

更新:也许原因不是 Windows 7,而是新计算机运行 64 位操作系统的事实。我这样说是因为当我在 64 位 Windows 7 上运行测试应用程序(此处为源代码)时,访问用户 DSN工作正常,但访问系统 DSN出现以下错误消息:

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

Microsoft文档表明,当32位的驱动器是一个64位的计算机,或者反之亦然上访问这种情况发生。这很可能是问题所在,因为当我将测试应用程序切换到 64 位时,可以访问系统 DSN。

现在的问题是:为什么系统 DSN 会发生这种情况,而用户 DSN 不会发生这种情况——是否为两者安装了不同的驱动程序?那将意味着我将无法再使用系统 DSN,因为我对我们需要使用的软件没有影响。

har*_*ymc 7

管理数据源的微软文章说如下:

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

如果您使用 64 位 odbcad32.exe 配置或删除连接到 32 位驱动程序的 DSN,例如 Driver to Microsoft Access (*.mdb),您将收到以下错误消息:

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

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

您的应用程序显然是 32 位的。您是否使用了正确的 odbcad32.exe 来定义 DSN?