目前我想验证在 Windows Server 2008 R2 计算机上配置了哪些 odbc 数据源。当我打开system32/odbcad32.exe
和时SysWow64/odbcad32.exe
,它们包含相同的源(64 位操作系统)。如何检查哪个 DSN 使用哪种架构?例如在 Windows 10 中,会显示此信息。
非常感谢!
答案1
相关注册表路径
- 32 位:
HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/ODBC/ODBC.INI
- 64 位:
HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI
下面微软 KB942976可能会对你的问题有答案。
我自己从来没有注意到这一点,因为x86和x64在我的例子中,ODBC 系统 DSN 始终适用system32/odbcad32.exe
于32 位以及SysWow64/odbcad32.exe
64 位。
如果你只使用用户 DSN,那么这似乎是微软解决方法服务器 2008 R2。我想您可以将所有内容更改为系统 DSN。
为了Windows 8和服务器 2012,有电源外壳 获取 OdbcDsn但不适用于服务器 2008 R2。
ODBC 管理员工具在 64 位版本的 Windows 中显示 32 位和 64 位用户 DSN
症状
64 位版本的 Microsoft Windows 操作系统包含以下版本的 Microsoft 开放数据库连接 (ODBC) 数据源管理器工具 (
Odbcad32.exe
):
该文件的 32 位版本
Odbcad32.exe
位于该%systemdrive%\Windows\SysWoW64
文件夹中。该文件的 64 位版本
Odbcad32.exe
位于该%systemdrive%\Windows\System32
文件夹中。该
Odbcad32.exe
文件显示以下类型的数据源名称 (DSN):
- 系统 DSN
- 用户 DSN
症状 1
32 位版本的 ODBC 管理器工具显示 32 位系统 DSN、32 位用户 DSN 和 64 位用户 DSN。64 位版本的 ODBC 管理器工具显示 64 位系统 DSN、32 位用户 DSN 和 64 位用户 DSN。
症状 2
这SQL数据源函数返回所有版本的用户 DSN,无论应用程序的架构如何。 SQL数据源在 32 位应用程序中调用的函数仅返回 32 位驱动程序的系统 DSN,但返回 32 位驱动程序和 64 位驱动程序的用户 DSN。同样, SQL数据源在 64 位应用程序中调用的函数仅返回 64 位驱动程序的系统 DSN,但返回 32 位驱动程序和 64 位驱动程序的用户 DSN。因此,如果应用程序使用从 SQL数据源函数,您可能会收到以下错误消息:
未找到数据源名称且未指定默认驱动程序
例如,请考虑以下场景。您为 32 位驱动程序“Microsoft Access Driver (*.mdb)”创建用户 DSN。此驱动程序没有相应的 64 位版本。SQL数据源 在 64 位应用程序中调用的函数返回此 32 位用户 DSN。但是,如果通过此 32 位用户 DSN 建立连接,则会收到本节前面提到的错误消息
原因
用户 DSN 存储在以下注册表子项下:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
此注册表子项未启用注册表重定向。因此,用户 DSN 在 32 位和 64 位版本的 ODBC 管理器工具中均可见。
解决
为了保持向后兼容性,当前尚无针对此问题的解决方案。
解决方法
要解决此问题,请使用适当版本的 ODBC 管理器工具。如果您在 64 位操作系统上构建并运行 32 位应用程序,则必须使用 %windir%\SysWOW64\odbcad32.exe 中的 ODBC 管理器工具创建 ODBC 数据源。要指示 DSN 的类型,您可以将“_32”添加到 32 位用户 DSN,将“_64”添加到 64 位用户 DSN。
更多信息
可以从控制面板调用 64 位 ODBC 管理器工具来管理 64 位进程使用的用户 DSN 和系统 DSN。在 64 位操作系统上,32 位 ODBC 管理器工具用于 Windows on Windows 64 (WOW64) 进程。您必须直接从 SysWoW64 文件夹调用 32 位 ODBC 管理器工具。您可以使用 32 位 ODBC 管理器工具来管理 WOW64 进程使用的用户 DSN 和系统 DSN。
系统 DSN存储在以下注册表子项中:
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
此注册表子项已启用注册表重定向。因此,32 位驱动程序和 64 位驱动程序的系统 DSN 是分开的。64 位 ODBC 管理器工具不显示由 32 位 ODBC 管理器工具创建的系统 DSN。同样,32 位 ODBC 管理器工具不显示由 64 位 ODBC 管理器工具创建的系统 DSN。此外,64 位 ODBC 管理器工具不显示使用 32 位驱动程序的系统 DSN。同样,32 位 ODBC 管理器工具不显示使用 64 位驱动程序的系统 DSN。
用户 DSN存储在以下注册表子项中:
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
此注册表子项未启用注册表重定向。因此,两个 ODBC 管理员工具均显示所有用户 DSN。
有关注册表重定向的详细信息,请访问下面的 Microsoft Developer Network (MSDN) 网站: