MS ACCESS:100 条记录后删除操作失败

MS ACCESS : Delete operation fails after 100 records

提问人:chrtak 提问时间:9/6/2023 最后编辑:June7chrtak 更新时间:9/7/2023 访问量:68

问:

我在使用 MS Access 时遇到了问题。我有一个删除例程设置 (SQL),可以在重新加载之前清除整个表。出于某种原因,当它达到 100 条已删除的记录时,它会出现以下错误:

3027 - 无法更新。数据库或对象是只读的。

我尝试了所有不同类型的删除方法,但结果相同。

MS ACCESS是2016年,最近才开始发生。有人见过类似的东西吗?我使用的代码非常简单:

    strStep = "Step 1 : Purge Table"
    strSQL = "" & _
            "DELETE [Name_List].* FROM [Name_List]"
    db.Execute strSQL, dbFailOnError

如果我手动突出显示整个表格并按 Delete,它可以工作。任何帮助都非常感谢!

SQL VBA MS-ACCESS-2016

评论

3赞 Gustav 9/6/2023
听起来像是数据损坏。尝试从头开始重新创建表。
2赞 June7 9/6/2023
同意,听起来像是某种腐败。发布的代码看起来正确无误。虽然,可能不会有什么区别,但没有必要在 DELETE 操作中引用字段。
2赞 hennep 9/6/2023
您多久删除一次该表的内容?紧凑和修复可能会解决这个问题。
1赞 Heinzi 9/7/2023
事实上,如果这样的事情偶尔发生(适用于少于 100 条记录,但会抛出一个看似荒谬的错误),这几乎总是表明数据库损坏。如果您使用 MS Access 进行数据存储,频繁的“压缩和修复”是您的朋友。
1赞 chrtak 9/7/2023
大家好 - 所以我删除了列表并重建了它,但得到了同样的错误。我也多次运行“紧凑和修复”,但无济于事。这变得非常令人沮丧。我会继续拉开被子。对于之前的问题,这个例程已经运行了 1+ 年,直到最近才出现问题。

答:

-2赞 Fatemeh Hosseini 9/7/2023 #1

错误消息“3027 - 无法更新。“数据库或对象是只读的”通常表示 Access 数据库或您尝试修改的特定表处于只读状态。此问题可能有多种原因。您可以采取以下一些步骤来排查问题并可能解决问题:

检查文件权限:确保 Access 数据库所在的文件夹对运行 Access 的用户帐户具有必要的写入权限。 确保 Access 数据库文件本身未标记为只读。右键单击 Windows 资源管理器中的文件,转到“属性”,并确保未选中“只读”属性。

检查数据库权限:确认您的用户帐户具有修改数据库的适当权限。您可能需要与数据库管理员或 IT 部门核实数据库是否托管在网络上。

紧凑和修复数据库:有时,Access 数据库可能会损坏或遇到问题。尝试压缩和修复数据库,看看是否能解决问题。为此,请转到“数据库工具”选项卡,然后选择“压缩和修复数据库”。

检查链接表:如果尝试从中删除的表是链接表,请确保源数据库不是只读的,也不是被其他用户锁定的。

检查表锁:确保没有其他用户或进程同时访问该表,这可能会锁定该表。

数据库拆分:如果 Access 数据库是连接到后端数据库的前端(通常用于多用户方案),请确保后端数据库未设置为只读。

病毒或备份软件:有时,防病毒软件或备份软件可以锁定数据库文件。确保没有此类软件干扰您的数据库。

数据库损坏:如果上述解决方案都不起作用,则可能存在某种程度的数据库损坏。在这种情况下,可能需要从备份还原或创建新数据库,并将对象(表、查询、表单等)导入到新数据库中。

访问版本和更新:确保您的 MS Access 软件是最新的,具有最新的 Service Pack 和更新。有时,此类问题可以通过软件更新来解决。 删除前的压缩和修复:

在运行 DELETE 查询之前,您可以尝试运行 Compact & Repair Database 操作,看看它是否有所作为。 如果在尝试这些步骤后问题仍然存在,则让 IT 专业人员或数据库管理员进一步诊断和解决问题可能会有所帮助,尤其是在网络或多用户环境中发生问题时。