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

Ms access 用于更改MS Access ODBC系统DSN的.mdb文件路径的命令行?,ms-access,odbc,dsn,Ms Access,Odbc,Dsn,我可以使用哪个odbcconf.exe命令行来更改现有系统DSN的MS Access.mdb文件的路径?您必须通过更改注册表来完成此操作。类似于这个例子的东西,我以前用过的网络 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 erro

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

您必须通过更改注册表来完成此操作。类似于这个例子的东西,我以前用过的网络

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配置,您将了解如何修改代码以适应您的情况

odbcconf.exe configsysdsn ^
  "Microsoft Access Driver (*.mdb, *.accdb)" ^
  "DSN=OurConnectionName;DBQ=X:\Path\to\OurMsAccessDB.mdb"
有两件事让我一时糊涂:

  • 确保在64位系统上使用64位odbcconf.exe,请参阅
  • 对mdb路径使用
    DBQ=
    而不是
    Database=
    。使用后者时,一切似乎都正常工作,但连接链接已命名,但实际上未在ODBC管理员中定义

您确定需要DSN吗?为什么不在应用程序中使用DSN较少的连接,这样您就可以完全控制运行时使用的路径?例如,您的用户可能没有更改DSN的权限。非常确定。我正在使用一个现有的、成熟的应用程序,它确实使用DSN连接,我正在为该应用程序编写测试。仅仅因为它有DSN并不意味着你必须使用它——你可以使用一个没有DSN的连接字符串,完全避免外部对DSN的依赖。在的内部访问说明。完美!我在注册表SZ值“HKEY\U LOCAL\U MACHINE\SOFTWARE\ODBC\ODBC.INI\[System DSN Name]\DBQ”中找到了.mdb路径存储的确切位置。非常感谢。我认为修改注册表是疯狂的,因为它是一个你根本不需要的外部依赖项,也就是说,你根本不需要DSN。不管是好是坏,我正在测试的应用程序已经使用了DSN连接,我无法更改该代码。我只想在应用程序不知道的情况下关闭.mdb文件,使用不同的数据集测试应用程序。在我编写的测试脚本中,我甚至没有建立连接,因此DSN与DSN less在这里并没有真正发挥作用。如果你使用DSN,你是在建立连接,只是不一定在代码中。