Windows 中存储的 ODBC 计算机 DSN 设置在哪里?

Where are ODBC Machine DSN settings stored in Windows?

在我的 Access 数据库中,我引用 DSN,"mydatasourcename" 以连接到在线 MySQL 数据库。这是一个机器DSN。不知何故,在编辑我的配置文件的过程中,创建了一个幻影 DSN。这个 DSN 现在已经过时了,我需要用新的主机名更新它(在迁移 MySQL 服务器之后)。但是找不到配置文件。它不会以 32 位或 64 位 "ODBC Data Sources" 形式显示。我在注册表编辑器中搜索了 "mydatasourcename",但也没有。奇怪的是,当我打开一个链接 table 引用 "mydatasourcename" 的访问时,它会打开一个 MySQL ODBC 连接器对话,其中包含旧的连接信息。这是怎么做到的?它从哪里获取连接字符串信息?要回答这个问题,我需要一份 ODBC 驱动程序查找配置文件的位置以及如何访问它们的列表,以便我可以删除旧的配置文件。我正在使用 MySQL ODBC 连接器 8.0.16。谢谢。

编辑:根据引用 DSN 的事实,在我的链接 table 中找到的连接字符串肯定是在 Access 之外寻找连接信息。我的一个链接 table 中的连接字符串如下:"ODBC;DSN=mydatasourcename;;TABLE=qrychemigationapplications_materialsrequired1"

在 Windows 上,ODBC DSN 信息存储在 Windows 注册表中。可以在注册表项中找到系统 DSN

64 位驱动程序的 DSN:HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
32 位驱动程序的 DSN:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI

并且可以在

中找到用户 DSN

HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI

如果 DSN 未出现在 ODBC 管理器中 (odbcad32.exe),可能是因为 DSN 名称未包含在相应子项的 DSN 列表中

...\ODBC.INI\ODBC Data Sources

通往odbcad32.exe的路径:

x86:

%windir%\syswow64\odbcad32.exe

x64:

%windir%\system32\odbcad32.exe

我能够在此处的 Windows 注册表中找到 Microsoft Access 创建的 "Machine Data Sources":

  • Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\ODBC\ODBC.INI\ODBC 数据源

注册表这一部分中的 "Machine Data Sources" 似乎只能通过 MS Access 访问。如果您使用标准 Windows ODBC 数据源管理器 "widgets"(32 位或 64 位)查找它们,您只是出于某种原因看不到 "Access Created" 机器数据源。如果有人能告诉我们原因,那就太好了!

更令人沮丧的是,至少使用最新的 Microsoft Access Office 365 版本,您只能创建新的机器数据源。您无法删除或编辑现有 "Machine Data Sources".

也就是说,如果您避免使用 Microsoft Access 本身创建 "Machine Data Sources",而是使用标准的 64 位 Windows ODBC 数据源管理器 "widget",那么无论出于何种原因Access 将看到您以这种方式创建的那些。

因此,您所描述的问题似乎是 Microsoft 专门针对 Microsoft Access ODBC 连接实施的一些奇怪设计的结果,原因我无法理解。

希望对您有所帮助!

下面是访问 Windows 注册表的替代方法:

  1. 控制面板
  2. 管理工具
  3. ODBC 数据源(32 位或 64 位)
  4. 单击以下选项卡:用户 DSN系统 DSN文件 DSN
  5. 单击数据源的名称
  6. 如果您想查看或修改数据源的详细信息,请单击配置...