【问题标题】:Access Can't delete records due to lock violations由于锁定冲突,访问无法删除记录
【发布时间】:2018-03-23 20:07:42
【问题描述】:

过去几年,我们一直在带 xp 机器的 Access 2003 上使用 Delete 命令,在我们将系统升级到 Access 2010 和 Windows 7 之前,它一直运行良好。

请查看下面的错误。不知道我错过了什么。我尝试创建一个新的链接 oracle 表,但它不起作用。

【问题讨论】:

  • 您确定您还有唯一的密钥吗?有时您必须在链接表格时分配它们。
  • 它仍然可以在 XP 机器上使用 Access 2007 运行良好。

标签: ms-access ms-access-2010


【解决方案1】:

我在尝试通过 MS Access 2010 更新链接的 SQL Server 表时遇到了同样的锁定错误。

这对你来说可能不再是问题了,因为这个帖子太旧了,但希望它能让其他人在未来更容易。

我能够通过将 SQL Server 中的 ID 字段从 bigint 更改为 int 来修复它。

您可能还需要确保在访问选项 --> 客户端设置 --> 高级中将“默认记录锁定”设置为“无锁定” DefaultRecordLocking http://www.tmetrics.net/support/patrick/stackoverflow/defaultrecordlocking.jpg

【讨论】:

    【解决方案2】:

    我在使用具有主键和唯一键的链接表时遇到此错误。链接表时,Access 假定唯一键是主键。

    通过暂时禁用或删除唯一键并使用链接表管理器刷新 ling”问题得到解决。

    【讨论】:

      【解决方案3】:

      似乎它无法删除的 332 条记录已被锁定,可能是被其他进程锁定了?是否有一个停滞的进程在某处运行并锁定这些记录?

      【讨论】:

      • 没有停滞的进程运行。当我在 XP 上使用与 Access 2007 相同的文件时,它会立即删除所有记录。
      • 开始列出机器之间的差异。您已经记下了 Access 的操作系统和版本,所以请继续。这两个差异似乎不会导致您遇到的情况,所以也许还有其他一些差异导致了这种情况。
      • @NickDeVore...不存在其他差异。
      【解决方案4】:

      我遇到了类似的问题...可以手动删除记录,但通过查询得到了该消息。

      即使我在一对多关系中删除“多”表中的记录,“密钥违规”消息仍然出现。

      我编辑了 ADD Cascade UpdateCascade Delete 的关系,问题就消失了。

      【讨论】:

        【解决方案5】:

        我遇到了这个问题。我有一个 Oracle 数据库的 Access 前端。我正在尝试从链接表中删除记录。我在互联网上的任何地方都没有找到解决方案。这是我的“解决方案”。
        我从 DoCmd.RunSQL 转换为 DBS.Execute 以运行我的删除查询。这摆脱了错误消息。但并不是所有的记录都被删除了。所以现在我在循环中执行删除查询。 recCount = DLookup("count(*)", "my_table")

        Do While recCount > 0       
            DBS.Execute "DELETE * FROM my_table", dbSeeChanges 
            recCount = DLookup("count(*)", "prod_nmpsia_premiums")
        Loop
        

        有时只需要通过一次。其他时候需要一些。 我知道这是一个杂牌。但它有效。

        【讨论】:

          【解决方案6】:

          我在使用 Access 2016 和 Oracle 数据库时遇到了同样的问题。我可以很好地附加到 Oracle 表,但是当我运行删除查询以删除这些相同的记录时,它会删除一些记录并说其他记录被锁定。如果我循环查询足够多次,它最终会删除所有记录。

          我找到的解决方案是在 Access 删除查询中,我将“使用事务”属性设置为“否”,它在没有任何记录锁定的情况下开始正常工作。我不知道这是否是一个完美的解决方案,但它适用于我的情况。

          --更新--

          上述解决方案适用于我的一些查询,但我仍然遇到其他查询的问题。所以它在某些情况下有所帮助,但并没有完全发挥作用。

          现在似乎起作用的是我在 Oracle 中存储了一个过程,该过程将删除我需要删除的数据,并且我正在从 Access 调用该过程。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-18
            • 1970-01-01
            相关资源
            最近更新 更多