我在使用托管CRM 2011解决方案的特定环境中收到导入错误。该解决方案之前已导入到许多其他环境中,但特别是失败的解决方案是抛出以下错误:
Dependency Calculation
role With Id = 9e2d2d9b-645f-409f-b31d-3a9c39fcc340 Does Not Exist
我对此感到有点困惑。我在解决方案XML中搜索并且无法找到对此特定GUID 9e2d2d9b-645f-409f-b31d-3a9c39fcc340的任何引用。我也无法在SQL中找到它,只是在不同的表中闲逛,但也许我不知道到底在哪里看。
我尝试多次导入解决方案。作为一种绝望的努力,我尝试在导入之前重命名目标环境中的所有安全角色,但这没有帮助。
答案 0 :(得分: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'
答案 1 :(得分:1)
完美的解决方案,为我工作!我唯一的评论是脚本B中的错误:它不应该清除给定模板的所有角色的模板ID,只清除新创建的“修复”角色的模板ID,如下所示:
update RoleBase
set RoleTemplateId = NULL
where RoleID='WXYZ74FA-7EA3-452B-ACDD-A491E6821234'
我很乐意将此作为对答案的评论,但截至目前还不够。