Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access ODBC计算机DSN设置存储在Windows中的什么位置?_Ms Access_Odbc_Mysql Connector - Fatal编程技术网

Ms access ODBC计算机DSN设置存储在Windows中的什么位置?

Ms access ODBC计算机DSN设置存储在Windows中的什么位置?,ms-access,odbc,mysql-connector,Ms Access,Odbc,Mysql Connector,在Access数据库中,我引用DSN“mydatasourcename”连接到在线MySQL数据库。这是一台机器DSN。不知何故,在编辑配置文件的过程中,创建了一个虚拟DSN。这个DSN现在已经过时了,我需要用新的主机名更新它(在迁移了MySQL服务器之后)。但是没有找到配置文件。它不会以32位或64位“ODBC数据源”形式显示。我在注册表编辑器中搜索了“mydatasourcename”,但它也不在那里。奇怪的是,当我打开一个引用“mydatasourcename”的Access链接表时,它会

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


编辑:根据引用DSN的事实,在我的链接表中找到的连接字符串肯定在Access之外查找连接信息。我的一个链接表中的连接字符串如下:“ODBC;DSN=mydatasourcename;;TABLE=qrychemigationapplications\u materialsrequired1”

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

64位驱动程序的DSN:
HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC\ODBC.INI

32位驱动程序的DSN:
HKEY\U LOCAL\U MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI

用户DSN可在中找到

HKEY\u CURRENT\u USER\SOFTWARE\ODBC\ODBC.INI

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

…\ODBC.INI\ODBC数据源

odbcad32.exe的路径:

x86:

x64:

我可以在Windows注册表中找到Microsoft Access创建的“机器数据源”:

  • 计算机\HKEY\U LOCAL\U机器\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC 数据源
注册表这一部分中的“机器数据源”似乎只能通过MS Access访问。如果您使用标准的Windows ODBC数据源管理器“小部件”(32或64位)来查找它们,您只是因为某种原因看不到“Access Created”机器数据源。如果有人能告诉我们原因,那就太好了

更令人沮丧的是,至少在最新的Microsoft Access Office 365版本中,您只能创建新的计算机数据源。您不能删除或编辑现有的“机器数据源”

也就是说,如果您避免使用Microsoft Access本身创建“机器数据源”,而是使用标准的64位Windows ODBC数据源管理员“小部件”,那么无论出于何种原因,Access都会看到您以这种方式创建的数据源

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


希望这有帮助

计算机数据源保存在注册表中我使用注册表编辑器对注册表进行了广泛搜索,但找不到数据源配置文件。这就是问题所在。在这种情况下,请在Ms access中进行检查,请参阅重复问题。PK的可能重复项为int autoincrement,并命名为自动识别的PK字段(例如ID),时间戳是否具有defailt和onupdate值?但您可以切换到ODBC/Connector 5.3.10进行测试。如果发布perist显示受影响的表创建语句。我太迟了;(但是您应该添加odbcad32.exe路径,因为它们令人困惑(system32用于x64/syswow64用于x86)因此,我的ODBC软件是32位的,但我在以下位置没有看到ODBC.INI:HKEY_LOCAL_MACHINE\software\Wow6432Node\ODBC。只有ODBCINST.INI文件夹在那里。有没有可能由于缺乏特权,我在这个位置看不到密钥?启动regedit.exe时,您没有收到UAC提示吗?我确实收到了UAC提示。实际上,没有任何东西是有意义的,因为它是用户DSN。因此,当我转到HKEY_CURRENT_User\SOFTWARE\ODBC\ODBC.INI\时,我找到了我的数据源…但它显示了更新的连接信息。当我进入Access并尝试单击引用此DSN的链接表时,它会显示旧的(不正确)连接信息…因此数据源位于正确的位置,但Access或ODBC驱动程序仍在查看幻象数据源,而不是此数据源。我修复了此问题,但仍不知道问题是什么,也不知道什么访问引用为DSN。我在Access中而不是在ODBC管理员中重新创建了计算机数据源。这似乎是错误的覆盖了幻影数据源。但我仍然不知道它之前引用了什么,可能还在引用…奇怪的是我的注册表停在了“Office”。我没有“ClickToRun”文件夹。知道那里发生了什么吗?没有真正的线索…但你不喜欢Microsoft吗?我想我不应该抱怨,因为我也不喜欢Google。可能是版本问题?我正在使用Microsoft Office Access Office 365 Edition。我是如何在注册表中找到这个位置的?我只是在注册表中搜索ODBC连接的名称我知道我是使用Microsoft Access显式创建的。因此,也许你可以找到你的(如果它们存在于注册表中),通过使用Access创建一个明显独特的SQL ODBC数据源,然后在注册表中搜索它。如果Microsoft只是更好地记录了一些东西,那会更有趣。是的,仍然找不到它…我正在使用Microsoft Access for Office 365 MSO。我想知道这是否与您的版本不同。
%windir%\syswow64\odbcad32.exe
%windir%\system32\odbcad32.exe