19

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

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

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

4

7 回答 7

30

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

如果在基于 SQL Server 的数据库中具有位数据类型的字段已留空,则会出现此问题。Microsoft Access 将空白字段解释为包含 Null 值的字段,Jet 数据库引擎不会释放它们。因此,记录保持锁定状态,不可删除。

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

于 2013-03-12T17:04:40.557 回答
2

使用 Compact & Repair 数据库

于 2016-09-03T09:02:57.843 回答
2

即使我没有位字段和可空字段,我也收到此错误。当我将 DATETIME 字段更改为 SMALLDATETIME 时,我不再收到错误消息。我唯一能想到的是 Access 错误地解释了日期,然后欺骗自己认为其他东西已经更新了日期。我之所以这么认为,是因为我在另一个线程上看到了另一个评论,Access 可以不同于 SQL Server 进行舍入。

于 2019-10-25T01:28:37.277 回答
1

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

于 2020-02-12T00:52:28.107 回答
1

我刚刚安装了 Access 2016 并在尝试从 accdb 导入 access 2013 表时出现错误。

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

于 2015-12-10T03:39:52.487 回答
0

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

于 2017-03-23T14:37:30.960 回答
0

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

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

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

于 2015-10-21T22:27:09.143 回答