故障背景:
AD域所在的winserver2012R2服务器迁移后无法创建用户,报错:目录服务无法分配相对标识符

故障原因:AD域克隆迁移后DC之间复制不正常
排查步骤:
- 检查RID Master状态
# 查看RID Master角色持有者
netdom query fsmo
- 检查RID池可用性
# 在域控制器上运行
dcdiag /test:ridmanager /v
- 查看完整的 RID Manager 测试结果
dcdiag /test:ridmanager /v > c:\rid_test.txt
然后打开 c:\rid_test.txt 文件,查找是否有 FAILED 或错误信息
- 检查当前DC的RID池状态
# 在当前DC上运行
dcdiag /test:ridmanager /s:WIN-QAGGG3NI10
- 验证RID Master角色持有者是否在线且正常:从之前的测试结果得出RID Master 是 WIN-QAGGG3NI10.suitbim.com
# 测试与RID Master的连接
Test-Connection WIN-QAGGG3NI10.suitbim.com
# 检查RID Master服务器状态
repadmin /showrepl WIN-QAGGG3NI10.suitbim.com
- 在RID Master上检查RID分配情况:登录到 WIN-QAGGG3NI10 服务器,运行:
dcdiag /test:ridmanager /v
c:\rid_test.txt:
目录服务器诊断
正在执行初始化设置:
正在尝试查找主服务器...
* 正在验证本地计算机 WIN-QAG6G63NI1O 是否为目录服务器。
主服务器 = WIN-QAG6G63NI1O
* 正在连接到服务器 WIN-QAG6G63NI1O 上的目录服务。
* 已识别的 AD 林。
Collecting AD specific global data
* 正在收集站点信息。
Calling ldap_search_init_page(hld,CN=Sites,CN=Configuration,DC=suitbim,DC=com,LDAP_SCOPE_SUBTREE,(objectCategory=ntDSSiteSettings),.......
The previous call succeeded
Iterating through the sites
Looking at base site object: CN=NTDS Site Settings,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=suitbim,DC=com
Getting ISTG and options for the site
* 正在标识所有服务器。
Calling ldap_search_init_page(hld,CN=Sites,CN=Configuration,DC=suitbim,DC=com,LDAP_SCOPE_SUBTREE,(objectClass=ntDSDsa),.......
The previous call succeeded....
The previous call succeeded
Iterating through the list of servers
Getting information for the server CN=NTDS Settings,CN=WIN-E2J0A6I8RA9,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=suitbim,DC=com
objectGuid obtained
InvocationID obtained
dnsHostname obtained
site info obtained
All the info for the server collected
Getting information for the server CN=NTDS Settings,CN=WIN-QAG6G63NI1O,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=suitbim,DC=com
objectGuid obtained
InvocationID obtained
dnsHostname obtained
site info obtained
All the info for the server collected
* 标识所有 NC 交叉引用。
* 找到 2 DC。正在测试其中的 1。
已完成收集初始化信息。
正在进行所需的初始化测试
正在测试服务器: Default-First-Site-Name\WIN-QAG6G63NI1O
开始测试: Connectivity
* Active Directory LDAP Services Check
无法将主机 37b279c2-7738-44a7-bb4c-47e20b907610._msdcs.suitbim.com 解析到某个 IP
地址。请检查 DNS 服务器、DHCP、服务器名称等等。
检查 LDAP 和 RPC 连接时出错。请检查防火墙设置。
......................... WIN-QAG6G63NI1O 没有通过测试 Connectivity
正在执行主要测试
正在测试服务器: Default-First-Site-Name\WIN-QAG6G63NI1O
用户请求忽略的测试: Advertising
用户请求忽略的测试: CheckSecurityError
用户请求忽略的测试: CutoffServers
用户请求忽略的测试: FrsEvent
用户请求忽略的测试: DFSREvent
用户请求忽略的测试: SysVolCheck
用户请求忽略的测试: KccEvent
用户请求忽略的测试: KnowsOfRoleHolders
用户请求忽略的测试: MachineAccount
用户请求忽略的测试: NCSecDesc
用户请求忽略的测试: NetLogons
用户请求忽略的测试: ObjectsReplicated
用户请求忽略的测试: OutboundSecureChannels
用户请求忽略的测试: Replications
用户请求忽略的测试: RidManager
用户请求忽略的测试: Services
用户请求忽略的测试: SystemLog
用户请求忽略的测试: Topology
用户请求忽略的测试: VerifyEnterpriseReferences
用户请求忽略的测试: VerifyReferences
用户请求忽略的测试: VerifyReplicas
用户请求忽略的测试: DNS
用户请求忽略的测试: DNS
正在 ForestDnsZones 上运行分区测试
用户请求忽略的测试: CheckSDRefDom
用户请求忽略的测试: CrossRefValidation
正在 DomainDnsZones 上运行分区测试
用户请求忽略的测试: CheckSDRefDom
用户请求忽略的测试: CrossRefValidation
正在 Schema 上运行分区测试
用户请求忽略的测试: CheckSDRefDom
用户请求忽略的测试: CrossRefValidation
正在 Configuration 上运行分区测试
用户请求忽略的测试: CheckSDRefDom
用户请求忽略的测试: CrossRefValidation
正在 suitbim 上运行分区测试
用户请求忽略的测试: CheckSDRefDom
用户请求忽略的测试: CrossRefValidation
正在 suitbim.com 上运行企业测试
用户请求忽略的测试: DNS
用户请求忽略的测试: DNS
用户请求忽略的测试: LocatorCheck
用户请求忽略的测试: Intersite
从以上的检查结果可以分析出:
- 原RID Master服务器 (WIN-E2J0A6I8RA9) 已经不在线
- 当前DC (WIN-QAGGG3NI1O) 无法连接到RID Master
- LDAP错误 81 和 Win32错误 0 表明服务器不可用
- DNS无法解析RID Master的GUID记录
这就是为什么无法创建用户的原因:当前DC的RID池用完了,但无法从已下线的RID Master获取新的RID池。
解决方案:
由于原RID Master已不可用,需要强制抓取角色,而不是转移。
# 在当前DC (WIN-QAGGG3NI1O) 上执行
# 1. 打开ntdsutil
ntdsutil
# 2. 进入角色管理
roles
# 3. 建立连接
connections
# 4. 连接到当前服务器
connect to server WIN-QAGGG3NI1O
# 5. 退出连接菜单
quit
# 6. 强制抓取RID Master角色(注意是seize不是transfer)
seize rid master
# 7. 确认提示,输入 yes
# 8. 退出
quit
quit

抓取后验证角色转移成功:
netdom query fsmo
应该看到:
RID 池管理器 WIN-QAG6G63NI1O.suitbim.com
WIN-QAGGG3NI1O为RID Master

后续清理工作:
- 清理旧DC的元数据
# 打开 Active Directory 用户和计算机
# 视图 -> 高级功能
# 找到 Domain Controllers OU
# 右键旧DC对象 (WIN-E2J0A6I8RA9) -> 删除
# 或使用命令行
ntdsutil
metadata cleanup
connections
connect to server WIN-QAG6G63NI1O
quit
select operation target
list domains
记下域编号(通常是0),然后:
select domain 0
list sites
记下站点编号(通常是0),然后:
select site 0
list servers in site
找到 WIN-E2J0A6I8RA9 的编号(比如是1),然后:
select server 1
quit
remove selected server
确认提示输入 yes,然后:
quit
quit


- 清理DNS中的旧记录
打开 DNS 管理器:
需要清理的具体位置:
1️⃣ 清理 _msdcs.suitbim.com
展开路径:
WIN-QAG6G63NI1O
→ 正向查找区域
→ _msdcs.suitbim.com
→ dc
→ _sites
→ Default-First-Site-Name
→ _tcp
在这里查找并删除包含以下内容的记录:
WIN-E2J0A6I8RA9
37b279c2-7738-44a7-bb4c-47e20b907610(旧DC的GUID)
同样检查:
_msdcs.suitbim.com
→ dc
→ _tcp (这里也可能有旧DC的记录)
2️⃣ 清理 suitbim.com
展开路径:
WIN-QAG6G63NI1O
→ 正向查找区域
→ suitbim.com
→ _sites
→ Default-First-Site-Name
→ _tcp
删除包含 WIN-E2J0A6I8RA9 的记录。
同样检查:
suitbim.com
→ _tcp
→ _udp
→ DomainDnsZones
→ ForestDnsZones
删除后刷新DNS:
ipconfig /flushdns
dnscmd /clearcache








- 清理AD站点和服务
- 打开 Active Directory 站点和服务:
- 展开
Sites→Default-First-Site-Name→Servers - 删除 WIN-E2J0A6I8RA9 服务器对象

- 展开
- 清理AD用户和计算机
- 打开 Active Directory 用户和计算机:
- 查看 → 勾选 高级功能
- 展开
Domain ControllersOU - 删除 WIN-E2J0A6I8RA9 计算机对象

- 展开
- 查看 → 勾选 高级功能
- 验证复制状态:确认没有关于旧DC的错误。
repadmin /showrepl
- 重新运行 dcdiag
dcdiag /v
应该不会再看到之前的连接错误。
- 在AD用户和计算机中尝试创建测试用户
注意事项:
确保原RID Master永远不会再上线,否则会造成冲突 如果原DC还会上线,必须先彻底降级它 抓取角色是不可逆操作,确认原DC确实不可恢复 建议在非工作时间操作 操作前做好当前DC的系统快照/备份