从Dynamics CRM 2016导入到Dynamics 365时,dbo.DependencyBase出错

时间:2017-03-02 10:26:11

标签: dynamics-crm dynamics-crm-2016 dynamics-365-sales

将Dynamics CRM 2016中的非托管解决方案导入到Dynamics 365的干净实例时,我收到此错误。没有其他详细信息,因此我不知道哪个特定实体出现问题

无法在对象'dbo.DependencyBase'中插入具有唯一索引'ndx_UniqueDependencyNodes'的重复键行。重复键值是(b8e82bca-64b2-4b4c-9192-0eb2010de885,a5396ca9-d5fa-4951-ba3f-619bb8fab0b7)。该语句已终止。

有没有人遇到过这个?

Dynamics CRM 2016版本为(8.1.0.569)(DB 8.1.0.563)

  

[更新] CRM 2016和Dynamics 365都是在线实例。

2 个答案:

答案 0 :(得分:3)

这是当前Dynamics 2016产品中的一个错误。微软正在研究解决方案。

CRM中解决方案的导入过程可能会在组织数据库中产生不一致,只能由SQL脚本修复。这本身不受支持,无法在Dynamics 365 / OnLine上完成。

我最近有关于CustomControlDefaultConfig实体的类似问题。

有关DependencyBase表的特定问题可以通过以下SQL脚本解决:

delete from
    DependencyBase
where
    DependencyId in
    (
        select
            d.DependencyId
        from
            Dependency d
            left join CustomControlDefaultConfig dc
                on d.DependentComponentObjectId = dc.CustomControlDefaultConfigId
            left join CustomControlDefaultConfig rc
                on d.RequiredComponentObjectId = rc.CustomControlDefaultConfigId
        where
            (d.DependentComponentType = 68 and dc.CustomControlDefaultConfigIdUnique is null)
            or (d.RequiredComponentType = 68 and rc.CustomControlDefaultConfigIdUnique is null)
);
  

请注意

     

在CRM数据库上执行此脚本是不受支持的操作。首先进行数据库备份并使用它需要您自担风险。

答案 1 :(得分:0)

对我来说,问题在于解决方案中包含的SLA。

我的情况是这样的:

- 在线PROD实例上开发和自定义(上线前) - 在一个解决方案中收集所有自定义

从此PROD复制(重新部署)到两个沙盒实例

- 将解决方案从一个沙箱导出到另一个沙箱或返回到PROD实例

我通过去除目标系统中的SLA然后删除SLA来纠正问题。

从那时起,我的解决方案可以反复导入,其中包含SLA,即使目标系统将SLA作为默认值并处于活动状态。