在创建用户的时候突然报错
日志下载下来之后,详细信息显示如下:The specified Active Directory user already exists as a Dynamics 365 user
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: The specified Active Directory user already exists as a Dynamics 365 user.Detail:
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
<ActivityId>8db0abce-0c48-42b8-bd70-f7ac7ef395d3</ActivityId>
<ErrorCode>-2147214036</ErrorCode>
<ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" />
<Message>The specified Active Directory user already exists as a Dynamics 365 user.</Message>
<Timestamp>2020-04-15T06:18:00.8358708Z</Timestamp>
<ExceptionRetriable>false</ExceptionRetriable>
<ExceptionSource i:nil="true" />
<InnerFault i:nil="true" />
<OriginalException i:nil="true" />
<TraceText i:nil="true" />
</OrganizationServiceFault>
但检查了systemuser这张表发现确实是没有这个用户的,那为什么还会有这个错误呢?
背景:想起来之前还原过一次DB,只还原了业务库,没有还原MSCRM_Config这个库
原因:这个用户之前由于某种原因在环境2中创建了一次,但没有在环境1中创建,后来还原环境1的Org_MSCRM的数据库到环境2,导致环境2中的这个用户信息被删除掉了,
但是:用户的信息创建后不仅仅只存在systemuser这张表中,还会在MSCRM_Config的一些表中存储相关信息,所以当再次在环境2创建该用户时,就会提示已经存在,不允许在创建了。
解决办法:删除掉MSCRM_Config库中跟这个用户相关的一些信息,主要存在SystemUserOrganizations和SystemUserAuthentication这两个表中,具体SQL语句如下
- 查询系统中已经不存在的用户在SystemUserOrganizations中的信息
select *
from SystemUserOrganizations
where organizationid='29CA5B3F-8FD1-E611-93FB-00155DC81318' and
crmuserid not in (
select systemuserid
from [Org_MSCRM].dbo.systemuserbase)
- 查询系统中已经不存在的用户在SystemUserAuthentication中的信息
select *
from SystemUserAuthentication
where userid in (
select userid
from SystemUserOrganizations
where organizationid='29CA5B3F-8FD1-E611-93FB-00155DC81318' and
crmuserid not in (
select systemuserid
from [Org_MSCRM].dbo.systemuserbase)
)
- 删除系统中已经不存在的用户在SystemUserOrganizations中的信息
delete
from SystemUserOrganizations
where organizationid='29CA5B3F-8FD1-E611-93FB-00155DC81318' and
crmuserid not in (
select systemuserid
from [Org_MSCRM].dbo.systemuserbase)
- 删除系统中已经不存在的用户在SystemUserAuthentication中的信息
delete
from SystemUserAuthentication
where userid in (
select userid
from SystemUserOrganizations
where organizationid='29CA5B3F-8FD1-E611-93FB-00155DC81318' and
crmuserid not in (
select systemuserid
from [Org_MSCRM].dbo.systemuserbase)
)
备注:DB中删除完之后,需要等待一会才可以正常创建,等个5-10分钟吧