3

我在使用托管 CRM 2011 解决方案的特定环境中遇到导入错误。该解决方案之前已被导入到许多其他环境中,但特别是它失败的地方是抛出以下错误:

Dependency Calculation
role With Id = 9e2d2d9b-645f-409f-b31d-3a9c39fcc340 Does Not Exist

我对此有点困惑。我在解决方案 XML 中进行了搜索,但找不到对 9e2d2d9b-645f-409f-b31d-3a9c39fcc340 的特定 GUID 的任何引用。我也无法在 SQL 中真正找到它,只是在不同的表中徘徊,但也许我不知道在哪里看。

我已尝试多次导入解决方案。作为一个绝望的努力,我尝试在导入之前重命名目标环境中的所有安全角色,但这没有帮助。

  1. 这个对安全角色的引用实际存储在哪里?这是否应该包含在我的解决方案中——我现有的 CRM 部署期望我导入?
  2. 如何解决问题以便能够导入此解决方案?
4

2 回答 2

5

这是我们用来解决问题的代码。我们必须运行两个不同的脚本。脚本 A 我们一共要运行四次。运行一次,尝试导入,然后查阅日志以查找导致问题的角色 - 如果您收到另一个角色的错误。

要运行脚本 A,您必须使用RoleTemplateId数据库中的有效值。我们只是随机选择了一个。您使用哪一个并不重要,因为您将使用脚本 B 删除该数据元素。

在所有角色都被修复后,我们得到了一个不同的错误(抱怨关于 的某些东西RoleTemplateId已经与一个角色相关),并且必须运行脚本 B。这会RoleTemplateId从多个不同的角色中删除 并将其设置为NULL.

脚本 A:

insert into RoleBaseIds(RoleId)
values ('WXYZ74FA-7EA3-452B-ACDD-A491E6821234')

insert into RoleBase(RoleId
    ,RoleTemplateId
    ,OrganizationId
    ,Name
    ,BusinessUnitId
    ,CreatedOn
    ,ModifiedOn
    ,CreatedBy
    )
values ('WXYZ74FA-7EA3-452B-ACDD-A491E6821234'
    ,'ABCD89FF-7C35-4D69-9900-999C3F605678'
    ,(select organizationid from Organization)
    ,'ROLE IMPORT FIX'
    ,(select BusinessUnitID from BusinessUnit where ParentBusinessUnitId is null)
    ,GETDATE()
    ,GETDATE()
    ,null       
    )

脚本 B:

update RoleBase
set RoleTemplateId = NULL
where RoleTemplateID='ABCD89FF-7C35-4D69-9900-999C3F605678'
于 2013-07-19T22:22:16.680 回答
1

完美的解决方案,为我工作!我唯一的评论是脚本 B 中的错误:它不应该清除给定模板的所有角色的模板 ID,只清除新创建的“修复”角色的模板 ID,如下所示:

update RoleBase
set RoleTemplateId = NULL
where RoleID='WXYZ74FA-7EA3-452B-ACDD-A491E6821234'

我很乐意将其放在对答案的评论中,但到目前为止还没有足够的代表。

于 2014-12-10T21:09:11.603 回答