Access 数据库引擎停止了该进程,因为您和另一个用户正在尝试更改相同的数据

问题描述 投票:0回答:8

我们最近将 Access 数据库迁移到 SQL 服务器上。完成后,我们开始使用我们拥有的前端访问数据库测试数据库(我们之前的设置涉及两个访问文件,一个用于前端,一个用于后端。)我们几乎立即收到了错误。

Microsoft Access 数据库引擎停止了该进程,因为您和另一个用户正在尝试同时更改相同的数据。

现在我们确实有多个人在这些前端工作,但在收到此消息时,我是唯一访问数据的人。我测试它的一般过程是使用表单插入数据。然后尝试删除数据。我知道数据正在进入表中,并且我是唯一查看或尝试编辑此信息的人,我们使用 ODBC 连接将 SQL Server 连接到前端。非常感谢任何建议或帮助,我将密切关注此线程,因此希望您问我的任何问题都能得到相对较快的答复。

sql-server-2008 ms-access ms-access-2010
8个回答
31
投票

这篇文章中,您会发现错误可能是由位数据类型引起的:

如果 SQL 中字段为 bit 数据类型,就会出现此问题 基于服务器的数据库已留空。微软访问 将空白字段解释为包含 Null 值的字段,并且 Jet 数据库引擎不会释放它们。结果,记录 保持锁定状态且无法删除。

请注意,您必须始终拥有主键或唯一键才能从 SQL Server 更新数据。


5
投票

使用压缩和修复数据库


2
投票

即使我没有位字段也没有可为空的字段,我还是收到了此错误。当我将 DATETIME 字段更改为 SMALLDATETIME 时,我不再收到错误。我唯一能想到的是 Access 会误解日期,然后欺骗自己认为其他东西已经更新了日期。我这样想是因为我在不同的线程上看到了另一条评论,Access 的舍入方式与 SQL Server 不同。


2
投票

我在 SQL Server 中的表中添加了一个时间戳字段,并在 access 中重新链接它,这样就成功了。它还解决了我在表格中遇到的编辑问题。希望这也能帮助其他人。该表已经有一个主键字段,但显然还需要时间戳字段。


1
投票

我刚刚安装了 Access 2016,并在尝试从 accdb 导入 Access 2013 表时遇到了错误。

显然 2016 年的后端引擎现在是 SQL Server。我删除了一个我打算使用但从未使用过的字段,因此它充满了空值。之后就没有问题了。


0
投票

我也遇到了上述问题,我想我会发布回复,因为 Microsoft 链接不再有效。

我将 Access 数据库的后端迁移到 AWS 服务器上的 MySQL,并且我尝试添加或删除记录的任何相关表都会生成该线程标题的错误。

我的解决方案是删除一个类型为“BIT”的字段,幸运的是这是我重新开发数据库之前使用的旧字段,因此可以删除。


0
投票

在sql中创建表列时尽量不要使用GetDate()作为默认值。这解决了我的问题。


0
投票

另一个解决方案是检查 SQL 表中是否有该列没有默认设置的(位)数据类型。

设置默认值,(0 或 1)

© www.soinside.com 2019 - 2024. All rights reserved.