记录一下:
不小心将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\test' ----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]=@DomainNameupdate [dbo].[SystemUserBase]
set [ActiveDirectoryGuid]=@adguidwhere [SystemUserId]=@crmUseriduse [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]=@orgidand [CrmUserId]=@crmUseridupdate [dbo].[SystemUserAuthentication]
set [AuthInfo]=@authInfowhere [UserId]=@configUseridgo
/*
如何查看域用户的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。*/