我有一个同事,他有两个同名的 DSN - 一个是用户 DSN,另一个是系统 DSN。他删除了用户 DSN,但无法在 ODBCad32 中删除系统 DSN
有人遇到过这种情况吗?
答案1
我曾见过这种情况,在 DSN 支持的注册表项中的某个位置插入了一个尾随句点 (.),但无法编辑或删除。它是 Oracle DSN 吗?如果不是,它使用的是什么驱动程序?
首先测试是否可以添加或删除另一个 DSN,或者整个面板是否变得无用。
检查您正在使用的面板。有时面板有两个副本C:\Windows\SysWOW64\odbcad32.exe
,一个是 32 位,C:\Windows\system32\odbcad32.exe
另一个是 64 位。请两个都试一下。
接下来,尝试查找 下的条目HKLM/Software/ODBC
。您也许可以在那里编辑或删除该条目。
用户 DSN 显示在两个面板中,但只有位匹配的管理员可以删除或编辑其中一个。
答案2
听起来这可能是权限问题。无论谁登录,系统 DSN 都是针对每台计算机的,因此您需要拥有计算机的管理权限才能删除或更改它。
如果您已经拥有管理权限,则需要检查密钥的安全性,并在必要时获取所有权。
答案3
我刚刚发现 Jet 驱动程序存在一个问题,该问题可能也适用于其他 ODBC 驱动程序:如果您创建或修改系统 DSN,并且存在同名的用户 DSN,则系统 DSN 注册表设置不完整 - 我认为它们会进入用户 DSN 配置。
系统 DSN 似乎可以工作,因为(至少 Jet)驱动程序会查找系统 DSN 注册表项(在 HKLM 下)和用户 DSN 项(在 HKCU 下)。如果删除用户 DSN,则会留下不完整的系统 DSN - 并且您的 ODBC 驱动程序可能不够强大,无法处理这种情况。
丹·科尼格斯巴赫