培训
模块
对 Active Directory 进行故障排除 - Training
了解如何对 AD DS 服务失败或性能下降进行故障排除。 了解如何恢复已删除的安全对象和 AD DS数据库,以及如何对混合身份验证问题进行故障排除。
本文讨论失败并生成 Win32 错误 8240 的Active Directory 域服务(AD DS)操作的症状、原因和解决方法:“服务器上没有此类对象。
备注
主用户: 本文仅适用于技术支持代理和 IT 专业人员。 如果你正在寻找解决问题的帮助, 请询问Microsoft社区。
适用于: 所有受支持的 Windows Server 版本
原始 KB 数: 2680976
错误 8240 (0x2030 或 ERROR_DS_NO_SUCH_OBJECT) 指示无法在 AD DS 中找到特定对象。 此错误可能发生在两个单独的情况下,这些情况在不同条件下表现出不同的症状。 本部分介绍主要症状以及可能会遇到这些症状的方式。
域控制器在其目录服务事件日志中记录 NTDS 常规事件 ID 1126。 事件数据列出了错误 8240:
事件类型:错误
事件源:NTDS 常规
事件类别:全局编录
事件 ID:1126
日期: <DateTime>
时间: <DateTime>
用户:NT AUTHORITY\ANONYMOUS LOGON
计算机:ComputerName
说明:
Active Directory 无法与全局目录建立连接。其他数据
错误值:
8240 服务器上没有此类对象。
内部 ID:
3200ba0
下表列出了你可能会看到错误 8240 的条件。
操作 | 症状 |
---|---|
在 Windows 命令提示符处运行 Repadmin /ShowReps 该命令。 |
会看到类似于以下消息的输出: <SiteName>\<DCName> objectGuid: <GUID> 上次尝试 @ <时间> 失败,结果 8240: 服务器上不存在该对象。 最后的成功 @ (从不)。 |
使用 Active Directory 站点和服务(dssite.msc)中的“立即复制”命令强制域控制器跨所选连接进行复制。 | 你会看到类似于以下消息的消息: 尝试将命名上下文命名>上下文<从域控制器 <Source-DCName 同步到域控制器 <Destination-DCName>> 期间发生以下错误: 服务器上不存在该对象。 此操作不会继续。 |
尝试从域控制器中删除 Active Directory。 | Active Directory 安装向导中收到以下错误消息: Active Directory 无法将目录分区<命名上下文>中的剩余数据传输到域控制器 <DCName>。 “服务器上没有此类对象。 |
备注
上表使用以下变量:
当 Windows 执行诸如查找通用组成员身份等任务时,系统依赖于具有全局编录角色的域控制器(称为全局编录服务器或 DC)。 如果系统找不到可用的 GC,它会在 NTDS 事件日志中记录事件 ID 1126。 该事件包括错误代码 8240。
有关 GCS 的详细信息,请参阅 规划全局编录服务器放置。
执行以下步骤:
检查林是否具有 GC。 例如,在林中的计算机上的 Windows PowerShell 窗口中,运行以下命令:
Get-ADDomainController -Discover -Service "GlobalCatalog"
执行下列其中一项操作:
可以通过创建新的域控制器并将其指定为 GC 来添加 GC。 若要将全局编录服务器角色添加到现有域控制器,请执行以下步骤:
打开 Active Directory 站点和服务(dssite.msc,也可在 服务器管理器 中的“工具”菜单上使用)。
展开 “站点”,展开站点,然后选择要修改的域控制器。
在右窗格中,右键单击 “NTDS 站点设置”,然后选择“ 属性”。
在 “常规 ”选项卡上,选择“ 全局目录”,然后选择“ 确定”。
备注
在 Active Directory 站点和服务中将域控制器标记为 GC 后,新 GC 可能需要一段时间才能完全可用。 知识一致性检查器(KCC)必须计算新的复制拓扑,生成全局目录,并传输 GC-ready
公告。 延迟取决于复制计划、用于复制所需只读命名上下文的时间以及 KCC 活动的间隔。
检查是否可以从 DNS 获取域控制器。 在域中的计算机上,打开命令提示符窗口,然后运行以下命令:
NLTest.exe /DnsGetDC:<DomainName> /GC /Force
备注
在此命令中, <DomainName> 表示新 GC 的域的名称。
如果无法在 DNS 中查询 GC 记录,请检查 isGlobalCatalogReady 属性的值。 为此,请执行以下步骤之一:
打开 PowerShell 窗口,然后运行以下命令:
Get-ADRootDSE -Server <GC_Name> | fl serverName , isGlobalCatalogReady
备注
在此命令中, <GC_Name> 表示 GC 的名称。
打开“命令提示符”窗口,然后运行以下命令:
ldp.exe <GC_Name>:389
在任一情况下,isGlobalCatalogReady 的值都应为 TRUE。 如果值为 FALSE,则复制周期尚未完成,或者另一个问题正在影响服务器。
检查是否可以使用端口 3268 连接到 GC。 在命令提示符处运行以下命令:
ldp.exe <GC_Name>:3268
备注
在 AD DS 林中,每个域控制器维护有关林对象的信息。 对对象的任何更改都从单个(源)域控制器开始。 从那里,更改将复制到源域控制器的复制合作伙伴(目标域控制器)。 这些域控制器进一步复制更改,最终所有域控制器都对更新的对象“知道”。 两个与错误 8240 相关的域控制器之间的复制过程遵循以下步骤:
步骤 1: 源域控制器通知目标域控制器更改。
步骤 2: 收到通知后,目标域控制器将从源域控制器拉取更改。
步骤 3: 每个目标域控制器查找对象的本地副本以应用更改。
步骤 4: 如果目标域控制器找不到对象的本地副本,则会生成错误 8240。
由于以下原因,可能缺少该对象:
解决此问题的第一步是了解哪些数据不一致,哪些域控制器受到影响:
在复制事务中,生成错误 8240 的域控制器是目标域控制器。 此域控制器上不存在不一致的对象,但存在于源域控制器上。 在某些上下文中,错误 8240 的文本标识源域控制器。 在其他人中,它不是。 在复杂的复制拓扑中,可能需要使用 Active Directory 站点和服务以及目标控制器的事件日志来验证源域控制器的身份。 此外,可以使用这些工具来识别源域控制器的其他复制合作伙伴,这些合作伙伴可能会报告相同的问题。
接下来,确定是要删除这些对象,保留这些对象,还是重置受影响的域控制器。 以下部分提供了每个选项的详细信息:
若要删除不一致的对象,可以将它们视为挥之不去的对象。 建议使用 Lingering Object Liquidator v2 (LoLv2) 删除挥之不去的对象。 有关 LoLv2 的详细信息,请参阅:
在某些情况下,无法使用 LoLv2。 相反,可以使用 Repadmin.exe。 可以通过在公告模式下运行 repadmin /removelingeringobjects
命令来执行此操作,如 Active Directory 复制事件 ID 2042 中所述 :自此计算机复制以来已过长:标识挥之不去的对象。
有关徘徊对象的详细信息,请参阅 如何检测和删除 Windows Server Active Directory 林中的挥霍对象。
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表。
如果要保留不一致的对象并将其复制到林的其余部分,请在目标域控制器上配置以下注册表项:
子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
名称:Strict Replication Consistency
类型:REG_DWORD
数据: 0
子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
名称:Allow Replication With Divergent and Corrupt Partner
类型:REG_DWORD
数据: 1
子项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
名称:Correct Missing Object
类型:REG_DWORD
数据: 1
更新这些注册表项后,允许更改复制到源域控制器的时间。 或者,可以使用 Active Directory 站点和服务中的“立即复制 ”命令来强制源域控制器使用特定连接将更改复制到目标域控制器。
重要
在包含许多域控制器的大型环境中小心。 当不一致的对象通过林进行复制时,它们可能会导致更多的域控制器报告 8240 错误,直到复制完成。
另一个选项是强制从源域控制器中删除林,方法是将其降级到成员服务器。 然后,清理林中的服务器元数据,然后重新升级服务器。 此操作将重新安装 AD DS。 然后,林数据的新副本将复制到新的域控制器。
若要删除并重新创建源域控制器,请执行以下步骤:
在源域控制器上,打开管理 PowerShell 窗口,然后运行以下命令:
Uninstall-ADDSDomainController -Force
备注
还可以使用服务器管理器中的“删除角色和功能”向导来执行此任务。 在向导中,请确保选择“ 强制删除此域控制器”。 有关详细信息,请参阅 降级域控制器和域:凭据。
在林中,清理与降级的域控制器相关的元数据。
再次将服务器提升为域控制器。 可以使用 服务器管理器 或 Powershell 来提升服务器。 建议使用用于创建原始域控制器的方法和选项。
等待安装和升级过程完成,并等待林数据复制。 可以使用事件查看器来遵循此过程。
如果需要Microsoft 支持部门方面的帮助,建议按照使用 TSS 收集 Active Directory 复制问题中提到的步骤收集相关信息。
有关详细信息,请参阅 无法将 Windows Server 域控制器提升到全局编录服务器。
培训
模块
对 Active Directory 进行故障排除 - Training
了解如何对 AD DS 服务失败或性能下降进行故障排除。 了解如何恢复已删除的安全对象和 AD DS数据库,以及如何对混合身份验证问题进行故障排除。
文档
无法将域控制器提升到全局编录服务器 - Windows Server
描述无法将基于 Windows Server 的域控制器提升为全局编录服务器的问题。
运行 DCDIAG 命令时出错 - Windows Server
修复了运行 DCDIAG.EXE /E 或 /A 或 /C 命令时发生的错误。
排查 AD 复制错误 5 访问被拒绝 - Windows Server
讨论 Active Directory 复制失败时访问被拒绝错误 5。 此问题可能发生在 Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows Server 2003 R2、Windows Server 2003 或Microsoft Windows 2000 Server 中。