系统 DSN 与用户 DSN

系统 DSN 与用户 DSN

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

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

最近,我们拥有越来越多的 Windows 7 机器,这种方法似乎不再有效。程序无法识别我在系统 DSN但它确实承认那些用户 DSN。我遇到的问题是,每次用户第一次登录计算机时,我都会接到电话并需要安装他或她自己的 DSN。

为什么这个在 XP 上有效,但在 7 上无效?我从一开始就做错了吗?

更新:也许原因不是 Windows 7,而是新电脑运行的是 64 位操作系统。我之所以这么说,是因为当我运行一个测试应用程序时 (源代码在这里)在 64 位 Windows 7 上,访问用户 DSN工作正常,但访问系统 DSN出现以下错误信息:

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

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

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

答案1

微软文章管理数据源内容如下:

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

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

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

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

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

答案2

用户权限:确保用户能够访问系统 DNS 或用户 DNS。这里的情况是,Lotus-Notes 作为系统用户下的一项服务运行。没有与 ODBC 的连接。我们更改了服务的用户,问题就解决了。

相关内容