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

Access链接SQL Server表数据表视图删改记录报并发冲突错误

问题现象
  • Access 链接 SQL Server 数据表后,通过 DELETE 查询执行删除记录操作无任何异常
  • 直接在链接表界面操作、或是在数据表视图模式下通过选择查询执行删除、更新记录操作时,Access 会拦截操作并弹出如下警告:

The microsoft access database engine stopped the process because you and another user are attempting to change the same data at the same time.

  • 经多轮确认,操作时无其他用户正在修改对应数据,不存在真实并发冲突
  • 业务系统存在大量遗留窗体,均默认采用数据表视图模式完成记录的修改、删除操作,未使用专用操作查询,短期内无法完成全量窗体的改造替换。
问题根因

该问题由 Kostas K. 协助定位,核心原因为:SQL Server 中设置为允许空值的 bit 类型字段,无法被 Access 数据库引擎正确转换识别,引擎会误判存在并发写入冲突,进而抛出锁报错。
补充特性:该报错仅会对从 Access 端新增的记录触发,SQL Server 侧预先存在的原生记录不会触发该问题。

会触发问题的错误字段定义如下:

[FIELD] [bit] NULL
修复方案

将表中所有允许空值的 bit 类型字段调整为非空约束,同时为字段设置默认值 0 即可彻底解决该问题,无需改造原有前端窗体逻辑。
调整后的正确字段定义:

[FIELD] [bit] NOT NULL

为字段添加默认值的对应SQL语句:

ALTER TABLE [dbo].[TABLE] ADD  DEFAULT ((0)) FOR [FIELD]
GO
问题复现参考表结构

以下为触发该问题的示例表创建脚本,其中 [IMPRESO]、[SELECTOR_REGISTRO] 两个 bit 类型字段允许空值,是导致报错的诱因:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [Chapas].[INFO_CHAPAS](
[ID_INFO_CHAPA] [int] IDENTITY(1,1) NOT NULL,
[COD_EQUIPO] [int] NULL,
[EQUIPO] [nvarchar](255) NULL,
[NUMERO_SERIE] [nvarchar](255) NULL,
[FASES] [nvarchar](255) NULL,
[VOLTAJE] [nvarchar](255) NULL,
[FRECUENCIA] [nvarchar](255) NULL,
[POTENCIA] [nvarchar](255) NULL,
[AÑO] [int] NULL,
[IMPRESO] [bit] NULL,
[SELECTOR_REGISTRO] [bit] NULL,
[USUARIO] [int] NULL,
[FECHA_IMPRESION] datetime NULL

CONSTRAINT [INFO_CHAPAS_PK] PRIMARY KEY NONCLUSTERED 
(
[ID_INFO_CHAPA] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY 
= OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [Chapas].[INFO_CHAPAS] ADD  DEFAULT ((0)) FOR [IMPRESO]
GO

内容的提问来源于stack exchange,提问作者Maiol Salse Escudero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:45:34