CRM域用户误删恢复

记录一下:

不小心将CRM用户在域中删除了(CRM中未删除),直接新建一个同样账号的域用户然后尝试在CRM中登录报“invalid user”错误,一番检查发现从2011版本开始CRM中不单记录了用户的域账号,而且还记录了域用户的GUID和SID,所以要恢复域用户参考以下sql步骤(在2011和2013版本中测试通过):

--将新建的ad用户加入ReportingGroup 组

use [Test_MSCRM]--CRM组织数据库

declare @orgName nvarchar(200)='Test' --CRM组织名称
declare @DomainName nvarchar(1024)='Domain est' ----CRM中原用户的登录域名
declare @adguid uniqueidentifier='C143E7B6-87FB-4646-A9B1-7DAD1CD7B022' --新创建的ad用户在ad里的guid ,如何查看guid参考以下
declare @authInfo nvarchar(255)='W:' + 'S-1-5-21-1982881794-697207762-1046364067-1122' --新创建的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 contextDC=domain,DC=comCN=Users。
4. 选择我们想要查看的域用户,右键点击并选择Properties。
5. 在Attributes列表中的objectSID属性的值就是这个域用户的SID。


我们仍然可以使用ADSIEDIT来查看对象的GUID。您可以参考下面的步骤:
1. 运行命令adsiedit.msc打开ADSI EDIT控制台。
2. 右键点击ADSI EDIT,选择Connect to,在弹出的窗口中点击OK。
3. 展开Default naming contextDC=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。
*/

原文地址:https://www.cnblogs.com/caizhidao/p/5073235.html