长期正常的Access无DSN连接突然报Error 3125故障求助
解决Access无DSN连接SQL Server时Error 3125('dbo.Denomination'无效名称)的问题
问题背景
多年正常运行的MS Access客户端(通过无DSN方式连接SQL Server),自2023年1月14日起出现Error 3125报错,提示:
'dbo.Denomination' 不是有效名称,请确认无无效字符、标点且长度合规
该表名称简短合规,无无效字符,且同连接下的AuditLog、lnkDBSCheck表可正常连接。运行环境为Windows 10 Pro 64位22H2(OS内部版本19045.2486),怀疑问题与1月11日推送的KB5022282(Windows 10 22H2 x64累积更新)、KB890830(Windows恶意软件删除工具)有关(1月13日重启工作站后触发)。已尝试以下操作但均无效:
- 反编译Access前端(FE)
- 更换ODBC驱动:
ODBC Driver 18 for SQL Server、ODBC Driver 17 for SQL Server、SQL Server Native Client 11.0 - 使用客户端早期版本
排查与解决建议
1. 卸载可疑累积更新KB5022282
Windows累积更新可能对ODBC连接的表名解析逻辑造成影响,优先卸载KB5022282测试:
- 打开
设置 > 更新和安全 > Windows更新 > 查看更新历史记录 > 卸载更新 - 找到KB5022282,右键选择卸载,重启工作站后重新测试连接
2. 重写并验证链接表的连接字符串
检查Denomination表的连接字符串是否存在隐性格式问题:
- 在Access中打开
外部数据 > 链接表管理器,选中Denomination表,点击编辑 - 确认
Initial Catalog(目标数据库名)、Server(服务器地址)等参数无多余空格或特殊字符 - 手动替换为标准无DSN连接字符串测试,示例:
Driver={ODBC Driver 17 for SQL Server};Server=你的服务器地址;Database=目标数据库名;UID=登录账号;PWD=登录密码;
3. 检查SQL Server端的表元数据与权限
- 登录SQL Server,执行
sp_help 'dbo.Denomination',检查表的所有者、列定义等元数据是否正常,排查是否存在不可见特殊字符(如全角空格) - 确认Access使用的登录账号对
dbo.Denomination表拥有SELECT及必要权限 - 尝试临时重命名表为
Denomination_temp,再改回原名称,修复可能的元数据异常
4. 重建Access链接表缓存
删除现有链接表后重新创建,排除前端缓存问题:
- 在Access中删除
Denomination链接表 - 打开
外部数据 > ODBC数据库 > 链接到数据源 > 无DSN - 输入正确连接字符串,重新选择
dbo.Denomination表完成链接 - 若仍报错,创建空白Access数据库仅链接该表,排除原前端其他对象的干扰
5. 验证系统区域设置兼容性
Windows更新可能修改区域设置,导致ODBC编码解析异常:
- 打开
控制面板 > 区域 > 管理 > 更改系统区域设置,确保当前系统区域与SQL Server服务器的区域设置一致 - 重启工作站后重新测试连接
内容的提问来源于stack exchange,提问作者Oxian
相关产品推荐
相关产品推荐

