记录一下:

不小心将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]=@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。
*/

CRM域用户误删恢复的更多相关文章

  1. Microsoft Dynamics CRM 2011 批量添加域用户 然后添加CRM用户

    一.先了解下 DSADD user命令详解 常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSAD ...

  2. Dynamics CRM 批量新建域用户

    好久没写了,今天大牛教了我偷懒的批量新建域用户的方法 是不是觉得  控制面板 =>管理工具=>用户和计算机=>Users=>新建用户,一个个建,很烦是不是,而且耗时,我上个项目 ...

  3. WinXP/Win7/Win8本地用户配置文件迁移至域用户

    一.概述 最近在进行加域的工作,PC大部分是Win7,使用过微软USMT 4.0和5.0工具进行迁移,但命令行报错,目前还没找到好的文章研究. 本文迁移方法很特殊,利用的是Windows默认配置文件. ...

  4. 解决服务器SID引起虚拟机不能加入AD域用户,无法远程登录的问题

    最近在公司搭建AD域控制器,发现无法在计算机真正添加域用户,也就是添加的用户虽然可以在本地登录,但是无法远程登录,尝试多种方法都无法解决,而最终原因居然是虚拟机导致的服务器的SID冲突.本文记录下该问 ...

  5. gitlab用户登录与AD域用户集成

    ---恢复内容开始--- 编辑gitlab.rb文件 sudo vi /etc/gitlab/gitlab.rb 下图是我编辑的内容示例(仅供参考): 编辑以下内容: gitlab_rails['ld ...

  6. (转)从0开始搭建SQL Server AlwaysOn 第一篇(配置域控+域用户DCADMIN)

    原文地址: http://www.cnblogs.com/lyhabc/p/4678330.html 实验环境: 准备工作 软件准备 (1) SQL Server 2012 (2) Windows S ...

  7. AD域撤销域用户管理员权限方案

    一.简介 公司大部分主机加入域已有一段时间了,由于某软件没管理员权限不能执行,所以管理员权限一直没撤销,不能完全实现域的管理效果.但起码实现了域用户脱离不了域的控制:http://www.cnblog ...

  8. JAVA 通过LDAP获取AD域用户及组织信息

    因为工作需求近期做过一个从客户AD域获取数据实现单点登录的功能,在此整理分享. 前提:用户可能有很多系统的情况下,为了方便账号的统一管理使用AD域验证登录,所以不需要我们的系统登录,就需要获取用户的A ...

  9. Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。

    注:本文由Colin撰写,版权所有!转载请注明原文地址,谢谢合作! 在某些情况下,为了安全起见,大部分公司都会使用域控制器或只会给员工电脑user的用户权限,这样做能大大提高安全性和可控性,但由此也带 ...

随机推荐

  1. [转]Installing python 2.7 on centos 6.3. Follow this sequence exactly for centos machine only

    Okay for centos 6.4 also On apu.0xdata.loc, after this install was done $ which python /usr/local/bi ...

  2. [Maven]Maven非常详细完整的教程

    请参考:http://blog.csdn.net/u012152619/article/category/6239920 第四部分已看完 另外也可参看简书:http://www.jianshu.com ...

  3. OAF_文件系列10_实现OAF将数据资料导出Excel到本地JXL(案例)

    20150729 Created By BaoXinjian

  4. WindowsForm的ComboBox初始化绑定并选中默认值

    1.通过查询将默认值放到第一个,然后进行绑定 //绑定线别 private void LineBind() { SqlConnection myConnection = new SqlConnecti ...

  5. mybatis传递参数到mapping.xml

    第一种方案 ,通过序号传递 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml <select id ...

  6. HTML中让表单input等文本框为只读不可编辑的方法

    有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value=&qu ...

  7. Python DES 加密解密,就是大家所谓想要的那个非常快速的方法

    这个要借助Crypto.Cipher这个插件来实现的,引用后只需要写如下代码即可 from Crypto.Cipher import DES class MyDESCrypt: key = chr(1 ...

  8. 经典算法C++版(参考一线码农博文)

    鉴于一线码农的算法博文基本通过C#完成,此处用C++再实现一遍,具体解法可参考其博文. 地址:http://www.cnblogs.com/huangxincheng/category/401959. ...

  9. servlet filter和springMVC拦截器的区别

    参考 http://blog.csdn.net/ggibenben1314/article/details/45341855

  10. 尚学堂Spring视频教程(七):AOP XML

    此处省略N个字.... 直接看下面 推荐链接: Spring Aop实例之xml配置