用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?

Posted

技术标签:

【中文标题】用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?【英文标题】:Command line to change path to .mdb file for MS Access ODBC System DSN? 【发布时间】:2010-08-05 16:55:05 【问题描述】:

我可以使用什么 odbcconf.exe 命令行来更改现有系统 DSN 的 MS Access .mdb 文件的路径?

【问题讨论】:

您确定需要 DSN 吗?为什么不在您的应用程序中使用无 DSN 连接,这样您就可以完全控制运行时使用的路径?例如,您的用户可能没有更改 DSN 的权限。 非常确定。我正在使用一个使用 DSN 连接的现有的、完善的应用程序,并且我正在为该应用程序编写测试。 仅仅因为它有一个 DSN 并不意味着你必须使用它——你可以使用一个无 DSN 的连接字符串并完全避免对 DSN 的外部依赖。在accessmvp.com/DJSteele/DSNLessLinks.html 访问内的说明。 【参考方案1】:

您必须通过更改注册表来做到这一点。这个例子的内容来自我之前使用过的网络

rem -----Author: Jim Michaels
rem -----copy the drivers where all good little ODBC drivers go
if errorlevel 1 goto bye
copy myodbcd.dll C:\WINDOWS\SYSTEM
if errorlevel 1 goto bye
rem ----create a .REG file to make registry entries
echo REGEDIT4>myodbc.reg
echo.>>myodbc.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\mysql]>>myodbc.reg
echo "APILevel"="2">>myodbc.reg
echo "ConnectFunctions"="YYN">>myodbc.reg
echo "Driver"="C:\\WINDOWS\\SYSTEM\\myodbc.dll">>myodbc.reg
echo "DriverODBCVer"="02.50">>myodbc.reg
echo "FileExtns"="*.txt">>myodbc.reg
echo "FileUsage"="0">>myodbc.reg
echo "Setup"="C:\\WINDOWS\\SYSTEM\\myodbc.dll">>myodbc.reg
echo "SQLLevel"="1">>myodbc.reg
echo.>>myodbc.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers]>>myodbc.reg
echo "MySQL"="Installed">>myodbc.reg
echo.>>myodbc.reg
rem -----install the registry entries by executing the .REG file
start /wait myodbc.reg
rem ----clean up after we are done installing
del myodbc.reg
:bye

如果您查看注册表中现有的 DSN 配置,您将了解如何修改代码以适应您的情况

【讨论】:

完美!我在 REG_SZ 值“HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\[System DSN Name]\DBQ”中找到了存储 .mdb 路径的确切位置。谢谢! 无论好坏,我的被测应用程序已经使用 DSN 连接,我无法更改该代码。我只想在应用程序不知道的情况下切换 .mdb 文件,以使用不同的数据集测试应用程序。在我正在编写的测试脚本中,我什至没有建立连接,因此 DSN 与 DSN-less 对我来说并没有真正发挥作用。 如果您使用的是 DSN,那么您就是在建立连接,而不必在代码中。【参考方案2】:

要回答所提出的问题,这里是使用 odbcconf.exe 而不是直接进入注册表的解决方案:

odbcconf.exe configsysdsn ^
  "Microsoft Access Driver (*.mdb, *.accdb)" ^
  "DSN=OurConnectionName;DBQ=X:\Path\to\OurMsAccessDB.mdb"

有两件事让我绊倒了一段时间:

确保在 64 位系统上使用 64 位 odbcconf.exe,请参阅 https://***.com/questions/6721702/windows-7-64-bit-odbc-drivers-for-ms-access-missing。 使用 DBQ= 而不是 Database= 作为 mdb 路径。使用后者时,一切似乎都可以正常工作,但是连接链接已命名,但并未在 ODBC 管理器中实际定义。

【讨论】:

以上是关于用于更改 MS Access ODBC 系统 DSN 的 .mdb 文件路径的命令行?的主要内容,如果未能解决你的问题,请参考以下文章

使用 ODBC 连接时如何在 MS Access 或 SQL Server 中使用日期数据类型

使用 ODBC 链接到 MySql 时,MS Access 表单不刷新

ODBC 驱动程序(AcuODBC、MS Access 驱动程序)

如何在 ms-access VBA 中检索表的 odbc 数据库名称

从 MS Access 中的 ODBC 连接中提取 UID

MS Access 和 ODBC。过滤器对话框不显示