You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ODBC .accdb驱动压缩Access数据库?

使用ACE ODBC驱动压缩Access (.accdb) 数据库的正确方法

针对你遇到的问题,ACE ODBC驱动(支持*.accdb)的COMPACT_DB参数格式与旧版.mdb驱动不同,核心区别是用分号分隔源文件、目标文件和选项,而非空格。以下是修正后的实现代码:

const TCHAR *Driver = TEXT("Microsoft Access Driver (*.mdb, *.accdb)");
TCHAR *DatabasePath = GetRegDBPath();
TCHAR sourceDB[MAX_PATH], destDB[MAX_PATH];
_stprintf_s(sourceDB, TEXT("%s%s"), DatabasePath, DBName);
_stprintf_s(destDB, TEXT("%s_compacted%s"), DatabasePath, DBName); // 目标文件名需与源文件不同

// 注意格式:COMPACT_DB=源文件;目标文件[;选项]
_stprintf_s(Attr, sizeof(Attr)/sizeof(TCHAR), TEXT("COMPACT_DB=%s;%s"), sourceDB, destDB);

Ret = SQLConfigDataSource(hPar,
                          ODBC_ADD_DSN,
                          Driver,
                          Attr);

关键调整点:

  • 参数分隔符:将旧版的空格分隔改为分号;,ACE驱动的COMPACT_DB格式为COMPACT_DB=源路径;目标路径
  • 目标文件:必须指定一个不存在的文件(或先删除现有目标文件),否则压缩会失败
  • 可选参数:如果需要指定压缩选项(如数据库版本、加密),可以追加在目标文件后,例如:
    // 压缩为Access 2007-2016格式(.accdb)并加密
    _stprintf_s(Attr, sizeof(Attr)/sizeof(TCHAR), TEXT("COMPACT_DB=%s;%s;Version=12;Encrypt=Yes"), sourceDB, destDB);
    

额外注意事项:

  • 确保程序位数与ACE驱动匹配:32位程序需使用32位ACE驱动,64位程序对应64位驱动,否则会出现驱动加载失败的问题
  • 目标路径需有写入权限,避免因权限不足导致压缩失败
  • 若仍报错,可通过SQLInstallerError获取更详细的错误代码,结合官方文档排查

内容的提问来源于stack exchange,提问作者fridgemagnet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:02:02