CRM开发-用户登录报错:No Microsoft Dynamics 365 user exists with the specified domain name and user ID

问题:CRM用户登录报错,事件查看器报错信息如下:
No Microsoft Dynamics 365 user exists with the specified domain name and user ID
在这里插入图片描述
背景:经检查用户被没有被停用,了解之后发现是该用户的域账号是删除后重新建的,那么问题很显然:域账号的id与当前CRM中用户的对应关系不对,没有更新为新的域账号的id。
解决方法:
use [XX_MSCRM]–CRM组织数据库

declare @orgName nvarchar(200)=‘XX’ --CRM组织名称
declare @DomainName nvarchar(1024)=‘Domain\username’ ----CRM中原用户的登录域名
declare @adguid uniqueidentifier=‘a5097956-40a7-453d-b68e-8bd8389c5021’ --新创建的ad用户在ad里的guid ,如何查看guid参考以下
declare @authInfo nvarchar(255)=W:’ + ‘S-1-5-21-1124609981-1798741626-970932038-11151’ --新创建的ad用户在ad里的sid,如何查看sid参考以下

declare @crmUserid uniqueidentifier

–获取CRM中原用户的systemuserid
select @crmUserid=[SystemUserId]
from [dbo].[SystemUserBase]
where [DomainName]=@DomainName

update [dbo].[SystemUserBase]
set [ActiveDirectoryGuid]=@adguid
where [SystemUserId]=@crmUserid

use [MSCRM_CONFIG]

declare @configUserid uniqueidentifier
declare @orgid uniqueidentifier

–获取组织id
select @orgid=[Id]
from [dbo].[Organization]
where [UniqueName]=@orgName

–获取config中用户id
select @configUserid=[UserId]
from [dbo].[SystemUserOrganizations]
where [OrganizationId]=@orgid
and [CrmUserId]=@crmUserid

update [dbo].[SystemUserAuthentication]
set [AuthInfo]=@authInfo
where [UserId]=@configUserid

go

/*
如何查看域用户的SID和GUID?
需要澄清的是,OU没有SID属性,只有GUID属性。所以我们无法查看OU的SID信息。我们可以使用ADSIEDIT来查看域用户的SID。您可以参考下面的步骤:

  1. 运行命令adsiedit.msc打开ADSI EDIT控制台。
  2. 右键点击ADSI EDIT,选择Connect to,在弹出的窗口中点击OK。
  3. 展开Default naming context\DC=domain,DC=com\CN=Users。
  4. 选择我们想要查看的域用户,右键点击并选择Properties。
  5. 在Attributes列表中的objectSID属性的值就是这个域用户的SID。

我们仍然可以使用ADSIEDIT来查看对象的GUID。您可以参考下面的步骤:

  1. 运行命令adsiedit.msc打开ADSI EDIT控制台。
  2. 右键点击ADSI EDIT,选择Connect to,在弹出的窗口中点击OK。
  3. 展开Default naming context\DC=domain,DC=com\。
  4. 选择我们想要查看的对象(域内的任何对象),右键点击并选择Properties。
  5. 在Attributes列表中的objectGUID属性的值就是这个域对象的GUID
    注:使用ADSIEDIT工具需安装SUPPORT TOOLS.
    SID&GUID区别
    1.在AD里面创建一个用户或者组都会为其分配一个SID,同时也会为这些对象分配一个GUID,GUID是一个128位的字符串,一个标识符,
    GUID不仅在整个域里面是唯一的,并且在全世界的范围内都是唯一的,独一无二的,换句话说你找遍整个世界都找不到一模一样的两个GUID值。
    另外,不仅用户和组这些安全主体会被分配一个GUID,整个域内的所有对象都会被分配一个GUID,比如域控制器等。而且一旦对象被分配了GUID那么这个GUID将伴随这个对象一直到它被删掉。
    2.SID可以被更改(一般组的SID不会更改),GUID不能被更改,对象的任何属性都可以改变,但唯独GUID不能被改变。
    3.SID的作用主要是为对象和资源做权限控制用的。
    GUID的作用主要是为了确定对象是谁,对象在那里。GUID一般都被复制到全局编录里面。比如我们平时在AD里面查找对象的时候,实际上查的是它的GUID。
    */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值