我无法删除系统 DSN 类型的特定 ODBC。我可以在同一台服务器上创建和删除其他 ODBC 连接,但无法删除特定的 ODBC(名称 = Default)。如果我尝试将其重命名为“Default”以外的名称,则会创建一个新的系统 DSN,其原始名称为“Default”,并且具有相同的元数据,例如描述和服务器 FQDN。
环境信息:
- 操作系统 = Windows Server 2012 标准 64 位
- ODBC =
- 名称 = 默认
- 平台 = 32位
- 驱动程序 = SQL Server Native Client 10.0
- 类型 = 系统 DSN
- 数据库 = SQL Server 2008 R2 SP2(位于另一台服务器上)
到目前为止我已经尝试过/学到的是:
- 我尝试使用“ODBC 数据源 32 位”(路径 =%windir%\syswow64\odbcad32.exe)。尝试删除它后,我没有收到错误消息,但 ODBC 仍然保留。我甚至无法使用“ODBC 数据源 64 位”(路径 =%windir%\system32\odbcad32.exe),但我可以使用这个 64 位工具查看(但不能修改)其他 32 位 ODBC。
- 如果我在该工具中执行“测试数据源...”来配置此“默认”ODBC,它会成功并显示“测试成功完成!”
- 此 ODBC 最初用于 Microsoft Dynamics GP 2010。当我启动 GP 2010 尝试连接到此“默认”ODBC 时,它不可用作连接选项,但服务器上的所有其他 ODBC 均可用。
- 我在注册表中找不到对此“默认”ODBC 或任何其他系统 DSN 类型的 ODBC 的任何引用。我已在HKEY_LOCAL_MACHINE >> 软件 >> ODBC >> ODBC.INI,并且那里存在的所有内容都是默认注册表项(名称 = (Default),而不是字符串文字“Default”)。此外,在我自己的研究中,我看到提到应该出现在此注册表路径中的“ODBC 数据源”项,但我根本没有该项。
答案1
我可以通过重新创建注册表值来删除。然后我使用%windir%\SysWOW64\odbcad32.exeGUI 客户端。
为了重新创建注册表值,我必须知道去哪里。在本例中,注册表路径为HKEY_LOCAL_MACHINE >> SOFTWARE >> Wow6432Node >> ODBC >> ODBC.INI >> ODBC 数据源缺少一个值。我手动创建的值包含以下信息:
- 名称 = 默认
- 类型 = REG_SZ
- 数据 = SQL Server Native Client 10.0
创建此值后,32 位 ODBC GUI 客户端中出现了两个名为“Default”的条目。在我删除一个“Default”ODBC 后,它们都消失了!
我怀疑 ODBCINST.INI 中有一个“Default”键,因为我觉得在删除之前我看到过一个。现在那里没有了。如果之前有,那是使用上述过程中的 GUI 工具删除的。