【问题标题】:Can Primary-Keys be re-used once deleted?主键删除后可以重复使用吗?
【发布时间】:2009-07-02 06:01:51
【问题描述】:

0x80040237 无法插入重复键。

我正在尝试通过 CrmService 为 MSCRM4.0 编写一个导入例程。 到目前为止,这一直是成功的。最初我只是让 CRM 生成记录的主键。但是我的客户希望能够将自定义实体的键设置为预定义的值。这可能使我们知道安装程序创建了哪些数据,以及安装后创建了哪些数据。

我进行了测试,以确保在调用 CrmService.Update() 方法时可以设置 Guid,结果表明记录是使用我们想要的值创建的。我运行了我的导入,一切似乎都很成功。在修改导入文件的验证码时,我删除了数据(通过crm浏览器界面)并尝试重新导入。不幸的是,现在它抛出了一个重复的键错误。

为什么会抛出这个错误? Crm 界面是否删除了记录,或者它仍然存在但隐藏在用户眼中?有没有办法确保已删除的记录被永久删除并且 Guid 变得免费?在实际环境中,这些 Guid 永远不会存在,但在我的开发过程中,我需要这些导入成功。

顺便说一下,考虑到我遇到了这个问题,这是否意味着静态设置 Guid 不是推荐的做法?

【问题讨论】:

    标签: import primary-key duplicates dynamics-crm dynamics-crm-4


    【解决方案1】:

    据我所知,实体已被软删除,因此除非您(或删除服务)将实体从数据库中删除,否则无法重用该 Guid。

    例如,在 LeadBase 表中,您会发现一个名为 DeletionStateCode 的字段,值为 0 表示该记录尚未被删除。

    值 2 标记要删除的记录。有一个删除服务每 2(?) 小时运行一次,以从表中物理删除这些记录。

    【讨论】:

      【解决方案2】:

      我认为 Zahir 是对的,请尝试运行删除服务并重试。这里有一些信息:http://blogs.msdn.com/crm/archive/2006/10/24/purging-old-instances-of-workflow-in-microsoft-crm.aspx

      【讨论】:

        【解决方案3】:

        查希尔是正确的。

        导入和删除记录后,您可以使用this tool 选择在您选择的时间启动删除服务。这样可以更轻松地测试导入和重新导入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-14
          • 1970-01-01
          • 1970-01-01
          • 2017-02-12
          • 2021-07-16
          • 1970-01-01
          相关资源
          最近更新 更多