为什么我的 32 位 ODBC 连接没有显示在 odbcad32.exe 中?

JRS*_*fty 4 windows-registry windows-7 64-bit 32-bit odbc

我有一个 Windows 7 64 位系统,它必须运行一个 32 位应用程序,该应用程序通过 ODBC 连接访问 MSSQL Server 2005 express。安装后一切正常。现在安装几周后,我收到一个报告,指出该应用程序不再连接到数据库。我检查了C:\Windows\SysWow64\odbcad32.exeODBC 设置是否有问题,并且 ODBC 连接不再可见。所以我检查了注册表,看它是否被完全删除。注册表项是HKEY_LOCAL_MACHINE\Software\Wow6432Node\ODBC当我打开该值时,odbcad32 或我自己的应用程序无法访问它们。

我试图以计算机管理员的身份运行它,所以权限不应该是一个问题,此外我检查以确保它们没有被更改,但我仍然无法让它工作。有没有人对如何将值重新导入 odbcad32 小程序有任何想法?这也很可能解决软件问题。

Tal*_*Ted 7

我认为我雇主网站上的这篇关于在 64 位 Windows 上使用 32 位 ODBC 的文章可能会帮助你...

您在下面的评论和原始问题陈述中都没有说过,清楚地表明您正在使用 32 位 ODBC 管理器。请注意,32 位和 64 位程序的名称相同,odbcad32.exe。不同之处在于它们违反直觉的目录位置—— System32(对于 64 位组件)和SysWow64(对于 32 位组件)。

可能会遇到一个旧的但反复出现的问题,即 Windows 注册表中的轻微损坏。损坏采用包含这个 4 字符字符串的条目的形式——

@=""  
Run Code Online (Sandbox Code Playgroud)

除了注册表导出文件之外,这些条目在任何地方都不可见——但它们可能会导致许多不受欢迎的行为。

注意:在您的 64 位 Windows 机器上,自然会有一些与 32 位注册表相关的复杂情况。 这篇 Microsoft KB 文章可能足以让您完成这些。

我建议您使用 64 位注册表编辑器导出以下分支(这些条目往往会出现在这些分支中)——

HKEY_LOCAL_MACHINE\Software\ODBC
HKEY_LOCAL_MACHINE\Software\WOW6432Node\ODBC
HKEY_CURRENT_USER\Software\ODBC
HKEY_CURRENT_USER\Software\WOW6432Node\ODBC
Run Code Online (Sandbox Code Playgroud)

在任何文本编辑器中编辑这些文件(Notepad.exe或者Wordpad.exe通常都可以),并删除上面包含该 4 字符字符串的所有行。然后,删除您导出的注册表树段,并从编辑过的文件中导入——从而恢复树段,减去损坏。