ODBC连接可正常使用但在ODBC数据源管理器中不可见的问题咨询
ODBC连接可正常使用但在ODBC数据源管理器中不可见的问题咨询
你遇到的这个情况其实挺典型的——核心问题是ODBC数据源管理器需要额外的注册表项来识别并列出数据源,你只添加了数据源本身的配置条目,但没把它注册到对应的“数据源列表”里,所以管理器看不到它;但像SPSS、RStudio这类直接指定数据源名称的程序,是直接去注册表的ODBC.INI路径下读取对应配置的,所以连接完全正常。
具体原因和修复方法
不管是用户DSN(HKEY_CURRENT_USER)还是系统DSN(HKEY_LOCAL_MACHINE),ODBC数据源管理器都会先读取同路径下的ODBC Data Sources键,这个键相当于一个“数据源索引”,只有在这里登记过的数据源,才会在管理器里显示出来。
1. 修复用户DSN的显示问题
你需要在HKEY_CURRENT_USER\Software\ODBC\ODBC Data Sources下添加一个字符串值:
- 名称:
MYDATABASE123(和你的数据源名称完全一致) - 值:驱动对应的名称(你用的
SQLSRV32.dll对应的驱动名称一般是SQL Server,可以打开ODBC数据源管理器的「驱动程序」标签确认)
对应的.reg文件内容可以直接用这个:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\ODBC\ODBC Data Sources] "MYDATABASE123"="SQL Server"
2. 修复系统DSN的显示问题
如果是要让数据源在系统DSN标签显示,需要区分32位和64位驱动:
- 64位系统DSN:在
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC Data Sources下添加同样的字符串值 - 32位系统DSN:因为Windows会把32位程序的注册表请求重定向到
WOW6432Node路径,所以要在HKEY_LOCAL_MACHINE\Software\WOW6432Node\ODBC\ODBC Data Sources下添加条目
举个64位系统DSN的.reg例子:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\Software\ODBC\ODBC Data Sources] "MYDATABASE123"="SQL Server"
额外说明
为什么程序能正常连接但管理器看不到?简单来说:
- 程序是直接通过你指定的数据源名称,去
ODBC.INI下找对应的配置项,不需要先查索引列表 - 数据源管理器则是先读取
ODBC Data Sources里的所有条目,再根据这些条目去加载对应的配置,没在索引里的自然不会显示
备注:内容来源于stack exchange,提问作者BdR
相关产品推荐
相关产品推荐

