我无法删除系统 DSN 类型的特定 ODBC。我能够在同一台服务器上创建和删除其他 ODBC 连接,但无法删除特定的 ODBC(名称 = 默认)。如果我尝试将其重命名为“默认”以外的名称,则会使用原始名称“默认”创建一个新的系统 DSN,该名称也具有相同的元数据,例如描述和服务器 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 仍然存在。我什至无法使用“ODBC 数据源 64 位”(路径 = %windir%\system32\odbcad32.exe)看到这个 ODBC,尽管我能够看到(但不能修改)其他使用它的 32 位 ODBC 64 位工具。
- 如果我在用于配置此“默认”ODBC 的工具中执行“测试数据源...”,它会成功并显示“测试成功完成!”
- 此 ODBC 最初是与 Microsoft Dynamics GP 2010 一起使用的。当我启动 GP 2010 以尝试连接到此“默认”ODBC 时,它不能用作连接选项,尽管服务器上的所有其他 ODBC 都可用。
- 我无法在注册表中找到对此“默认”ODBC 或系统 DSN 类型的任何其他 ODBC 的任何引用。我查看了HKEY_LOCAL_MACHINE >> SOFTWARE >> ODBC >> ODBC.INI,所有存在的都有一个默认注册表项(名称=(默认),而不是字符串文字“默认”)。此外,在我自己的研究中,我已经看到提到应该出现在此注册表路径中的“ODBC 数据源”键,但我根本没有。
我可以通过重新创建注册表值来删除。然后我使用%windir%\SysWOW64\odbcad32.exe GUI 客户端删除了整个 ODBC 。
为了重新创建注册表值,我必须知道去哪里。在这种情况下,HKEY_LOCAL_MACHINE >> SOFTWARE >> Wow6432Node >> ODBC >> ODBC.INI >> ODBC Data Sources处的注册表路径缺少值。我手动创建的值具有以下信息:
创建此值后,在 32 位 ODBC GUI 客户端中显示了两个条目,名称为“默认”。在我删除了一个“默认”ODBC 后,它们都消失了!
我怀疑在 ODBCINST.INI 中有一个“默认”键,因为我想我在删除之前看到了一个。现在那里一个也没有。如果之前有,则在上述过程中使用 GUI 工具将其删除。