Microsoft Access连接SQL Managed Instance触发写锁错误如何解决
Access连接Azure SQL Managed Instance写锁错误解决方案
以下是经过验证的可行修复方案,按优先级依次操作:
- 校验SQL侧表结构配置
Access连接SQL Server体系数据源时,必须依赖唯一行标识才能定位记录执行更新操作,仅支持插入记录、无法编辑是这类配置缺失的典型表现:- 确认所有需要编辑的业务表都设置了主键或者非空唯一索引,迁移过程中如果主键/唯一索引配置丢失会直接触发该问题
- 如果业务表不适合设置主键,可以新增一个
ROWVERSION类型的字段,该字段由SQL引擎自动维护,不需要业务侧做额外开发,Access会自动识别该字段作为行版本校验依据
- 调整ODBC驱动配置
不要使用Windows系统自带的 legacy 版SQL Server ODBC驱动,更换为最新版的Microsoft ODBC Driver 18 for SQL Server,配置DSN时注意两项参数:- 加密配置和SQL Managed Instance的加密策略保持一致,不要强制开启不匹配的加密规则
- 关闭ODBC层的额外锁相关配置,保持默认参数即可
- 修正链接表创建流程
重新通过Access链接表管理器添加表时,当弹出「选择唯一记录标识符」的弹窗时,必须选中对应表的主键/唯一索引字段,不要直接跳过该步骤,跳过会导致Access默认将表标记为仅可插入不可编辑状态 - 调整Access客户端锁配置
打开Access主界面的「选项」-「客户端设置」-「高级」分类:- 将「默认记录锁定」设置为「不锁定」
- 取消「使用记录级锁定打开数据库」的勾选,SQL Managed Instance本身会处理行级锁逻辑,Access侧的额外锁配置会和云端实例的锁机制冲突触发写锁报错
快速验证方法:可在SQL Managed Instance中新建一个仅含主键ID、1个字符串字段的测试表,配置好主键后重新用Access链接,选中主键作为唯一标识,测试编辑是否正常。如果测试表可正常编辑,即可确认是原有业务表的唯一标识配置问题。
内容的提问来源于stack exchange,提问作者Daniel Williams
相关产品推荐
相关产品推荐

