【问题标题】:Microsoft Dynamics CRM Unique Nonclustered IndexesMicrosoft Dynamics CRM 唯一非聚集索引
【发布时间】:2019-10-28 06:58:18
【问题描述】:

我在工作中继承了 Dynamics CRM 系统,正在运行:本地版本 1612 (8.2.2.112) (DB 8.2.2.112)

我们的情况似乎是由于表单提交失败而间歇性地发生重复,随后又重新提交。我们在内部发布了一份文档来解释这种行为,并表达了首先检查部分或全部事务是否真正成功的重要性。但人类终将是人类,而且经常忘记……

话虽如此,作为一名 DBA,我的第一直觉是创建一个唯一的约束/索引。但是,我不清楚如何在 Dynamics 范围内最好地实现这一点。我对内置的应用程序级重复检测没有信心,备用键对我们不起作用,因为我们的许多独特约束都需要包含一个或两个 DATE 字段。

据我所知,向 CRM 基表添加索引是受支持的 DML 操作,但表明它会阻止升级。这是否意味着我们将来无法升级?或者只是在升级过程中不会迁移索引?

是否有更好的解决方案我缺少,它们提供数据库级别的一致性并且不妨碍升级?

【问题讨论】:

    标签: dynamics-crm microsoft-dynamics


    【解决方案1】:

    使用本地 CRM,您可以添加索引,但它没有指定这不会扩展到聚集索引。我非常强烈建议索引 CRM 数据库以提高性能。根据开发者指南:

    对于 Microsoft Dynamics 365 本地部署,添加索引是 根据部署和管理中的指南支持 Microsoft Dynamics CRM 文档。这适用于所有 Microsoft Dynamics 365 数据库和 Microsoft Dynamics 365 for Outlook 本地数据库。

    (我实际上并没有在上述文档中看到任何与索引相关的内容)

    我不确定您参考了哪些关于不支持这些索引的升级的文档,我从未遇到过使用我索引的数据库升级 CRM 组织的任何困难。但是,升级到与全文索引相关的 v9 显然存在问题: https://community.dynamics.com/crm/f/117/t/242951

    此外,如果您曾经迁移到在线 CRM,整个方法将不再有效。

    所有 CRM 环境都支持的方法是编写一个同步的预操作插件来检查您的唯一性条件,并引发 InvalidPluginExecutionException。此异常可以包括用户友好的消息,用户在尝试创建副本时将在标准错误弹出窗口中收到该消息。与应用程序违反索引约束时发生的任何事情相比,这保证是更好的体验。

    我使用这种方法强制联系电子邮件地址的唯一性,并且效果非常好。我设置了重复检测规则,如果用户忽略重复警告并仍然创建联系人,他们会收到一条消息,指出不允许重复的电子邮件地址。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 2011-05-29
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 1970-01-01
      相关资源
      最近更新 更多