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

如何通过DBeaver查看MS Access数据库查询的SQL代码?

解决DBeaver批量提取Access查询SQL代码的问题

问题场景

  • 用DBeaver Enterprise 24.0.0通过Modern JDBC-ODBC bridge连接Access 2007-2016格式数据库
  • 需批量提取数百条查询的SQL代码,但DBeaver内查看视图定义/生成DDL时,始终返回-- View definition not available;
  • 尝试查询系统表MSysObjects时触发权限错误:SQL Error [42000]: [-1907][42000]: [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'
  • UCanAccess驱动连接失败,程序长时间无响应后崩溃

可行解决方案

方案1:授权后通过系统表批量查询

  1. 打开目标Access数据库,依次点击文件>选项>当前数据库
  2. 在「导航选项」里勾选「显示系统对象」,确定后刷新导航栏
  3. 右键MSysObjects表,选择设计视图
  4. 点击设计选项卡>属性表,给当前用户添加读取数据权限,保存更改
  5. 返回DBeaver,执行以下SQL批量提取查询代码:
SELECT 
    Name AS 查询名称, 
    SQL AS 查询SQL代码
FROM MSysObjects
WHERE 
    Type = 5 
    AND Flags = 0;

说明:Type=5代表查询对象,Flags=0用于过滤系统内置查询,结果会返回所有自定义查询的名称和对应SQL

方案2:Access内用VBA批量导出SQL

不想修改系统表权限的话,直接在Access里用VBA脚本批量导出:

  1. 打开Access数据库,按Alt+F11打开VBA编辑器
  2. 插入新模块,粘贴以下代码:
Sub 批量导出查询SQL()
    Dim qdf As QueryDef
    Dim fso As Object
    Dim 导出路径 As String
    
    ' 修改为你需要的导出目录
    导出路径 = "C:\Access查询导出\"
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 自动创建目录
    If Not fso.FolderExists(导出路径) Then
        fso.CreateFolder 导出路径
    End If
    
    ' 遍历所有查询并导出
    For Each qdf In CurrentDb.QueryDefs
        ' 跳过系统查询
        If Left(qdf.Name, 4) <> "MSys" Then
            Dim 文件 As Object
            Set 文件 = fso.CreateTextFile(导出路径 & qdf.Name & ".sql", True)
            文件.WriteLine qdf.SQL
            文件.Close
        End If
    Next qdf
    
    MsgBox "所有查询SQL已导出至:" & 导出路径, vbInformation
End Sub
  1. 运行该宏,所有查询的SQL会导出到指定目录的单个.sql文件中

方案3:修复UCanAccess连接问题

如果坚持用UCanAccess驱动:

  1. 确保下载的UCanAccess驱动包(需包含ucanaccess.jar、jackcess.jar等所有依赖文件)版本与DBeaver 24.0.0兼容
  2. 在DBeaver连接配置中,手动指定所有依赖Jar包的路径,不要仅选择ucanaccess.jar
  3. 降低DBeaver的连接超时阈值,避免因超时导致崩溃
  4. 若数据库文件较大,先执行文件>压缩和修复数据库后再尝试连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 21:50:58