我们最近将访问数据库迁移到SQL服务器上。完成后,我们开始使用我们的前端访问数据库测试数据库(我们之前的设置涉及两个访问文件,一个用于前端,一个用于后端。)我们几乎立即收到错误。
Microsoft访问数据库引擎停止了该过程,因为您和另一个用户正在尝试同时更改相同的数据。
现在我们确实有多个人在这些前端工作,但在收到此消息时,我是唯一访问数据的人。我测试它的一般过程是使用表单插入数据。然后尝试删除数据。我知道一个事实,数据正在进入桌面,我知道我是唯一一个查看或尝试编辑此信息的人,我们使用ODBC连接将SQL服务器连接到前端。非常感谢任何建议或帮助,我会严重监控这个主题,所以期待您提出任何问题,让我得到相对较快的回答。
答案 0 :(得分:26)
在this article中,您会发现错误可能是由位数据类型引起的:
如果SQL中具有位数据类型的字段,则会出现此问题 基于服务器的数据库已留空。 Microsoft Access 将空白字段解释为包含Null值的字段,以及 Jet数据库引擎不会释放它们。结果,记录 保持锁定状态,无法删除。
请注意,您必须始终使用主键或唯一键来更新SQL Server中的数据。
答案 1 :(得分:2)
使用Compact&修复数据库
答案 2 :(得分:1)
我刚刚安装了Access 2016,并且尝试从accdb导入访问2013表时出错。
显然2016年的后端引擎现在是SQL Server。我删除了一个我打算使用但从未使用的字段,因此它充满了Null。之后没有问题。
答案 3 :(得分:1)
我在SQL Server的表中添加了一个timestamp字段,并在访问中重新链接了该字段,从而达到了目的。它还解决了我在桌子上遇到的编辑问题。希望这对其他人也有帮助。该表已经有一个主键字段,但显然也需要时间戳字段。
答案 4 :(得分:0)
如上所述,我也遇到过这个问题,因为微软链接不再有用,我想发布回复。
我在AWS服务器上将Access数据库的后端迁移到MySQL,而我尝试添加或删除记录的任何相关表都会生成错误,即该主题的标题。
我的解决方案是删除一个类型为“BIT”的字段,幸运的是,这是在我重新开发数据库之前使用的旧字段,因此可以删除。
答案 5 :(得分:0)
在sql中创建表列时,尽量不要使用GetDate()作为默认值。这解决了我的问题。
答案 6 :(得分:0)
即使我没有位字段也没有可为空的字段,但我还是收到此错误。将DATETIME字段更改为SMALLDATETIME时,我停止收到错误消息。我唯一能想到的是Access误解了日期,然后欺骗自己以为其他原因更新了日期。我之所以这样想,是因为我在另一个线程上看到了另一条评论,即Access与SQL Server的取舍可能不同。