Dynamics crm Microsoft Dynamics CRM唯一非聚集索引

Dynamics crm Microsoft Dynamics CRM唯一非聚集索引,dynamics-crm,microsoft-dynamics,Dynamics Crm,Microsoft Dynamics,我在工作中继承了Dynamics CRM系统,运行版本为1612 8.2.2.112 DB 8.2.2.112内部部署 我们所处的情况是,通过提交失败的表单,复制似乎间歇性地发生,随后会重新提交。我们在内部发布了一份文档,解释了这种行为,并表示首先检查部分或全部事务是否实际成功是多么重要。但人终究是人,而且常常忘记 话虽如此,作为一名DBA,我的第一反应是创建一个唯一的约束/索引。然而,我不清楚如何在动力学的范围内最好地实现这一点。我对内置的应用程序级重复检测没有信心,备用键对我们不起作用,因为

我在工作中继承了Dynamics CRM系统,运行版本为1612 8.2.2.112 DB 8.2.2.112内部部署

我们所处的情况是,通过提交失败的表单,复制似乎间歇性地发生,随后会重新提交。我们在内部发布了一份文档,解释了这种行为,并表示首先检查部分或全部事务是否实际成功是多么重要。但人终究是人,而且常常忘记

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

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

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


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

对于Microsoft Dynamics 365内部部署,添加索引非常重要 根据部署和管理中的指导原则提供支持 Microsoft Dynamics CRM文档。这适用于所有微软公司 Dynamics 365数据库和Microsoft Dynamics 365 for Outlook 本地数据库

在上面提到的文档中,我实际上没有看到任何与索引相关的内容

我不确定您所参考的关于不支持这些索引的升级的文档,我从未遇到过使用我索引的数据库升级CRM组织的任何困难。但是,升级到与全文索引相关的v9显然存在一些问题:

此外,如果您曾经转向CRM online,那么整个方法将不再有效

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

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