首页 > 代码库 > AD复制故障
AD复制故障
复制故障的常见症状
表明存在站点内部复制故障的常见症状包括:
用户和计算机没有收到已更新的策略。 | |
没有将正确的 SYSVOL 共享内容复制到所有域控制器 (DC)。 注意:FRS 故障也可能导致出现此症状。 |
要解决这些问题,请使用下列实用工具:
域控制器诊断 (Dcdiag.exe) 和网络诊断 (Netdiag.exe) 实用工具。您可以从 Windows 2000 CD-ROM 上的 Windows 2000 支持工具中获取这些工具。 有关如何获得和使用 Dcdiag.exe 与 Netdiag.exe 诊断实用工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 265706 (http://support.microsoft.com/kb/265706/EN-US/) Windows 2000 中的 DCDiag 和 NetDiag 方便了域的加入和 DC 创建 | |
复制诊断实用工具 (Repadmin.exe)。使用此工具可验证站点链接是否正确以及显示入站和出站连接。您还可以使用它来显示复制队列。您可以从 Windows 2000 CD-ROM 上的 Windows 2000 支持工具中获取此工具。 有关如何获得和使用 Repadmin.exe 实用工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 229896 (http://support.microsoft.com/kb/229896/EN-US/) Using Repadmin.exe to Troubleshoot Active Directory Replication | |
文件复制服务实用工具 (Ntfrsutil.exe)。 | |
Active Directory 复制监视器 (Replmon.exe)。您可以从 Windows 2000 CD-ROM 上的 Windows 2000 支持工具中获取此工具。 |
下表介绍了在尝试解决此类问题时需要遵循的基本步骤:
确保域名服务 (DNS) 配置正确。正确的目录复制需要有正确的 DNS 配置。 | |
确保您可以使用 Ping.exe 实用工具从域控制器的网络中心伙伴通过主机名和 IP 地址来“ping”该域控制器。 | |
确保网络分支中的计算机能够解析网络中心中的名称。例如,“ping”server1.domain1.site1.forest.com。 | |
确保您能够通过事件日志中所列的服务器的全局唯一识别符 (GUID) 来 ping 服务器。如果您能够通过服务器的主机名来成功地 ping 服务器,但不能通过其 GUID 来成功地 ping 服务器,则存在 DNS 配置问题。 | |
运行 Dcdiag.exe 实用工具。此实用工具会运行一系列测试,结果不是“通过”就是“失败”。确保所有测试均顺利通过。 | |
在您遇到问题的网络分支上查看事件查看器的目录服务日志。研究并解决所有错误。 | |
通过将 Repadmin.exe 实用工具与 /showreps 开关配合使用来验证站点链接正确。 | |
通过将 Repadmin.exe 实用工具与 /showconn 开关配合使用来验证入站连接。 | |
查看 Winnt/Debug 文件夹中的所有日志文件。 |
特定的症状及故障排除步骤
注意:在下列各节中,将报告问题的域控制器称为“目的服务器”。将目的服务器尝试从中复制内容的域控制器称为“源服务器”。
“Access Denied”(拒绝访问)错误
当您将 Repadmin.exe 工具与 /showreps 开关配合使用时,所返回的复制状态信息中会列出一条或多条“Access Denied”(拒绝访问)错误信息。这表明域控制器上次尝试与其他域控制器联系时没有成功。因为域控制器是 Enterprise Domain Controllers 组的成员,它有权调用其他域控制器上的任何函数。如果您发现域控制器之间的调用导致“Access_Denied”(拒绝访问)错误,则问题不在于缺少正确的凭据,而在于其中一个域控制器未正确配置。
如果错误是“ERROR_ACCESS_DENIED”,请查找 Kerberos 问题。 | |
如果错误是“ERROR_DRA_ACCESS_DENIED”,请查看一下两个目录上所涉及到的两台计算机的计算机帐户是否都是正确的。确保域控制器的“userAccountControl”字段是正确的。 |
Repadmin.exe 或 Replmon.exe 对特定目录分区报告“Access Denied”(拒绝访问)
此问题通常表明存在 Kerberos 身份验证故障,尽管有一些例外。在此情况下,要解决复制故障,请先解决身份验证故障,然后再尝试解决复制问题。要解决此问题,请按照下列步骤操作:
1. | 确保源服务器的安全策略中的“从网络访问这台计算机”用户权限包括目的服务器的机器帐户。可以通过 Everyone 组、Enterprise Domain Controllers 组来做到这一点,也可以通过单独对其进行指定来做到这一点。 | ||||||||
2. | 确保启动了密钥分发中心服务。您可以使用 Dcdiag.exe 通过 dcdiag /test:services 命令来测试所有域控制器上的服务故障。 注意:在此命令中,“test”和“services”之间有一个冒号。 | ||||||||
3. | 确保目的服务器拥有来自其他源服务器的连接对象。当它没有来自其他源服务器的连接对象时,如果知识一致性检查器 (KCC) 没有自动创建连接或者已被禁用,则您可能必须创建手动连接。 | ||||||||
4. | 确保 KCC 拓扑是连通的。如果 KCC 尚未形成完全拓扑,则无法复制更改。要对此进行测试,请使用 dcdiag/test:topology 命令,并指定您要检查的域拓扑。 | ||||||||
5. | 确保在“Active Directory 用户和计算机”MMC 管理单元中的“域控制器属性”对话框中,选中了“常规”选项卡上的“信任计算机作为委派”复选框。 | ||||||||
6. | 如果该问题存在于不同域中的域控制器之间,请检查信任关系。为此,请使用“Active Directory 域和信任关系”管理单元或使用 netdom trusttrusting_domain_name/domain:trusted_domain_name/verify /kerberos 命令。 | ||||||||
7. | 确保每台计算机都对配置名称上下文 (Config NC) 进行了同步。KCC 必须知道是哪些服务器和站点。您可以使用 repadmin/syncall 命令强制服务器与整个企业保持同步。指定您要同步的名称上下文是 Config NC。确保您的站点链接拓扑是正确的。强制 KCC 在每台服务器上运行以重新生成拓扑,或者等待 15 分钟。 | ||||||||
8. | 确保密钥桥头服务器能够正常运行。您必须确定所做更改是否可以在整个企业中流动。为每个站点运行一次 dcdiag/test:intersite 命令。此命令会返回这些桥头服务器的名称,并返回有关它们是否报告错误的信息。 | ||||||||
9. | 检查 userAccountControl 属性的特性。确保 UF_SERVER_TRUST_ACCOUNT 0x2000 和 UF_TRUSTED_FOR_DELEGATION 0x80000 特性已定义。例如,如果您将十进制的特性值 532480 转换为十六进制,该值将变为 x82000,其中 0x8000 对应于 UF_TRUSTED_FOR_DELEGATION,而 0x2000 对应于 UF_SERVER_TRUST_ACCOUNT。 | ||||||||
10. | 使用 Replmon.exe 实用工具来确定多台计算机的 pwdLastSet 和 unicodePwd 特性是否具有一致的时间/日期戳。 | ||||||||
11. | 确保服务主要名称 (SPN) 在每台域控制器上进行了注册。使用 dcdiag/test:outboundsecurechannels 命令对此进行测试。您可以通过前面的 GUID 来标识用于进行复制的 SPN:E3514235-4B06-11D1-AB04-00C04FC2DCD2/b2f6f255-4446-45e8-81a3-0649d5d71a66/domain.com。 | ||||||||
12. | 在整个企业中强行复制所有计算机帐户。这意味着必须将所有域控制器与其所在域的所有其他副本进行同步。对于正在报告复制错误(如“Access Denied”(拒绝访问))的每台计算机,使用 repadmin/syncall 命令强制该计算机保持同步。请注意,您必须指定您要同步的域。 | ||||||||
13. | 当您运行前面的 Repadmin.exe 命令时,您可能收到以下错误信息: The security context could not be established due to a failure in the requested quality of service. 如果您确实收到此错误信息,请转向内部处理并查找“DSID”。有关如何获得 Dsid.exe 工具的信息,请与“Microsoft 产品支持服务”(PSS) 联系。有关如何联系 Microsoft PSS 的信息,请访问下面的 Microsoft Web 站点:http://support.microsoft.com (http://support.microsoft.com/) | ||||||||
14. | 确保 Enterprise Domain Controllers 组在目录分区 ACL 上具有需要的权限:
| ||||||||
15. | 使用“Active Directory 站点和服务”管理单元,确保服务器对象及其相应的“NTDS 设置”子对象存在于正确的站点中。 | ||||||||
16. | 检查目的服务器所拥有的票证是否对于源服务器而言已经陈旧或无效。请使用 Kerbtray、Krbtest 和 Klist Windows 2000 Resource Kit 实用工具来执行上述测试。使用 NETDOM RESETPWD 命令来重置帐户密码,并将此项更改写入最近的复制伙伴。这将有效地更改密码,将旧密码和新密码设置为同一密码,然后将此项更改写入复制伙伴。这需要您使用以下命令或者重新启动计算机: krbtest /system /callpackage:purge |
“The DSA Operation Is Unable to Proceed Because of a DNS Lookup Failure”(由于存在 DNS 查找故障,DSA 操作无法继续)错误
要排除此错误,请执行以下操作:
1. | 使用 Nltest /dsgetdc:/pdc /force /avoidself 命令确定返回的 PDC 是否正确。 |
2. | 如果存在连接对象而 REPLMON 或 REPADMIN 命令没有报告复制链接,则问题可能与 KCC 有关。 |
3. | 在 PDC 上运行下面的命令,然后将输出提交给 Microsoft PSS 以便进一步排除故障: nltest /DBFLAG:0x2000FFFF |
4. | 运行 nltest /dsgetdc:/gc /force 命令以确定您是否可以与全局编录服务器 (GC) 联系。 |
5. | 在 PDC 以及您遇到问题的服务器上检查“上次更改密码的时间”参数。 |
操作被排队或者没有显示任何复制链接
当您运行 Repadmin.exe 或 Replmon.exe 实用工具时,没有报告任何复制链接。要解决此问题,请启动 KCC,并查看目录服务日志中是否有与 KCC 相关的事件。这通常表明在与域控制器进行通信时发生了故障。
复制访问被拒绝或者正在删除名称上下文
当您尝试启动复制操作时,收到下列消息之一:
Replication access is denied.
- 或者 -
The naming context is in the process of being deleted.
如果使用“Active Directory 站点和服务”管理单元在域控制器上启动复制操作的用户没有启动复制操作所需的适当权限,则可能发生此问题。请检查执行此操作的用户的凭据。
站点之间存在重复的连接对象
要解决此问题,请按照下列步骤操作: 警告:注册表编辑器使用不当可导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
1. | 确定是否存在以下情况:过去曾经使用站点之间的显式桥头并且没有将其删除,或者当前使用了站点之间的显式桥头但其配置错误。对此进行验证的一种方法是:使用 LDP 工具连接到具有重复连接的站点中的站点间拓扑生成器 (ISTG)。如果您浏览 Config NC 以到达站点间传输容器,然后到达“cn=ip”,可查看此对象。如果它包含“bridgeheadServerListBL”特性,则存在显式桥头。 有关如何确定站点的 ISTG 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 224599 (http://support.microsoft.com/kb/224599/EN-US/) Determining the Inter-Site Topology Generator (ISTG) of a Site in the Active Directory | ||||||||||||||||||||
2. | 确定重复的连接是出现在所有站点中还是出现在特定的站点子集中。查找某种模式,如在某些特定服务器集合之间存在重复连接。在具有重复连接的站点中,查看重复连接上的 fromServer 特性。对于该“fromServer”,考虑它所在的站点。尝试隔离该站点中的活动。该站点中有多少台服务器?通过从 ISTG 使用 Ping 实用工具,可以到达某些服务器吗? | ||||||||||||||||||||
3. | 确保复制间隔时间的设置适当并且 ISTG 能够完成其复制。 | ||||||||||||||||||||
4. | 要帮助隔离重复连接问题,请按照下列步骤操作:
|
多个域控制器中所应用的组策略不一致
您可以使用以下示例脚本来确保组策略已正确复制到您所在域的所有域控制器中。 Microsoft 提供的编程示例只是为了进行说明,没有任何明示或暗示保证,包括(但不限于)针对特定用途的适销性和/或适用性的暗示保证。本文假定您熟悉所演示的编程语言以及用于创建和调试过程的工具。Microsoft 的专业支持人员可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需求。如果您的编程经验不够丰富,您可能需要与 Microsoft 认证伙伴联系或者拨打 Microsoft 收费咨询电话 (800) 936-5200。有关 Microsoft 认证伙伴的更多信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/partner/referral/ (http://www.microsoft.com/partner/referral/)
有关 Microsoft 提供的支持选项的其他信息,请访问下面的 Microsoft Web 站点:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms)
使用 chkpolicy所在域的名称 命令来运行此脚本:
@echo off
REM /logs/chkpolicydomain_name
set filename=sysvol/%dom_name%/Policies/{6AC1786C-016F-11D2-945F-00C04fB984F9}/Machine/Microsoft/Windows NT/SecEdit/GPTTMPL.INF
nltest /dclist:%dom_name% > dclist.tmp
del dclist1.tmp
FOR /F "eol=; tokens=1 delims=, " %%i in (dclist.tmp) do (
@echo %%i >> dclist1.tmp
)
FOR /F "eol=. tokens=1 delims=. " %%i in (dclist1.tmp) do (
@echo %%i
dir //%%i/%filename%
)
目录服务因太忙而无法完成操作
您可能收到错误 8438 ERROR_DS_DRA_BUSY:“The directory service is too busy to complete the replication operation at this time”(目录服务目前因太忙而无法完成复制操作)。如果目录服务正在删除名称上下文(已删除 500 个对象),但需要在不阻碍复制队列的前提下一遍完成太多的对象,则会出现此错误。如果全局编录清理操作使得复制无法成功,您可以创建一个批处理文件来加快该进程的速度。然后,您可以重新提升该计算机以充当全局编录服务器。下面的示例脚本提供了此功能: Microsoft 提供的编程示例只是为了进行说明,没有任何明示或暗示保证,包括(但不限于)针对特定用途的适销性和/或适用性的暗示保证。本文假定您熟悉所演示的编程语言以及用于创建和调试过程的工具。Microsoft 的支持人员可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需要。如果您的编程经验不够丰富,您可能需要与 Microsoft 认证伙伴联系或者拨打 Microsoft 收费咨询电话 (800) 936-5200。有关 Microsoft 认证伙伴的更多信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/partner/referral/ (http://www.microsoft.com/partner/referral/)
有关 Microsoft 提供的支持选项的其他信息,请访问下面的 Microsoft Web 站点:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms)
setlocal
set destgc=__setgcnamehere__.site1.forest1.com
:domain1
repadmin /delete DC=domain1,DC=site1,DC=forest1,DC=com %destgc% /nosource
if %errorlevel% == 8438 goto :domain2
:domain2
repadmin /delete DC=domain2,DC=Site1,DC=forest1,DC=com %destgc% /nosource
if %errorlevel% == 8438 goto :domain3
REM ...
endlocal
高级故障排除技巧
知识一致性检查器和 ISTG
您可以为知识一致性检查器创建一个包含更多诊断信息的事件日志。为此,请在出现重复连接的站点的 ISTG 上执行下列步骤:
1. | 保存事件日志的内容,然后清除该事件日志。 |
2. | 将以下注册表子项中的“1 Knowledge Consistency Checker”注册表双字节值设置为 5: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NTDS/Diagnostics |
3. | 通过运行 repadmin /kcc 命令来运行知识一致性检查器。 |
4. | 将“1 Knowledge Consistency Checker”注册表双字节值重设为 0(零)。 |
5. | 保存新的事件日志。 |
要获取新的基准度量,请按照下列步骤操作:
1. | 确保计算机具有指向网络中心的站点链接。如果不存在这样的链接,请创建之。 |
2. | 删除所有进入该计算机的连接对象。 |
3. | 通过运行 repadmin /kcc 命令来运行知识一致性检查器。 |
4. | 通过运行 repadmin /showconn 命令来确保上述命令已创建所需的连接。 |
5. | 在目录服务事件日志中查找错误。您可能看到表明无法为名称上下文X添加副本的错误(例如,事件 ID 1265)以及错误Y。确定此错误是否与 DNS 问题有关,或者它是否为连接错误,然后尝试纠正相应的问题。如果该错误表明某个目标帐户名不正确,或者如果它是一个 SPN 错误,则解决起来可能更加困难。 |
6. | 如果事件日志报告成功添加了副本,请通过运行“repadmin /showreps”命令对此进行检查。 |
在调整站点链接复制时间间隔后,请等待配置更改复制到其他网络中心服务器,然后重新启动各个网络中心服务器以清除复制队列。您可以使用“repadmin/sync”命令或“Active Directory 站点和服务器”管理单元来强行复制配置名称上下文,以便在重新启动各个网络中心服务器之前,能够在这些服务器上看到更新后的站点链接。使用 Dcdiag.exe 实用工具来评估各个站点的复制是否完好。该工具可以通过脚本远程运行,并且分析输出中是否存在“fail”。您可以使用下面的示例脚本作为示例: Microsoft 提供的编程示例只是为了进行说明,没有任何明示或暗示保证,包括(但不限于)针对特定用途的适销性和/或适用性的暗示保证。本文假定您熟悉所演示的编程语言以及用于创建和调试过程的工具。Microsoft 的支持人员可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需要。如果您的编程经验不够丰富,您可能需要与 Microsoft 认证伙伴联系或者拨打 Microsoft 收费咨询电话 (800) 936-5200。有关 Microsoft 认证伙伴的更多信息,请访问下面的 Microsoft Web 站点:
http://www.microsoft.com/partner/referral/ (http://www.microsoft.com/partner/referral/)
有关 Microsoft 提供的支持选项的其他信息,请访问下面的 Microsoft Web 站点:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms)
REM check replications in sitesite1dcdiag /s:dc1 /test:replications /a /n:domain1dcdiag /s:dc1 /test:replications /a /n:domain2dcdiag /s:dc1 /test:replications /a /n:domain3REM check replications in sitesite2REM continue Dcdiag statements for domains insite2
文件复制服务 (FRS)
1. | 如果您觉得目录服务复制起作用,但 FRS 出现故障,请确保将 FRS 后 Service Pack 1 (SP1) 修复程序安装在所有复制伙伴中。此更新程序包含在 Windows 2000 Service Pack 2 和 Service Pack 3 中。 | ||||||||||||||||||
2. | 运行 Ntfrsutil ds 命令以验证以下事项:
| ||||||||||||||||||
3. | 运行 Ntfrsutil 命令来检查下列事项:
| ||||||||||||||||||
4. | 提高 FRS 日志记录级别。为此,请向 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NtFrs/Parameters 注册表子项添加以下注册表值: 数值名称:Debug Log Severity 数值名称:Debug Maximum Log Messages 数值名称:Debug Log Files | ||||||||||||||||||
5. | 为帮助排除故障,您可以将域控制器上的 FRS 的状态“转储”到文件中。可使用以下示例脚本作为如何操作的示例: Microsoft 提供的编程示例只是为了进行说明,没有任何明示或暗示保证,包括(但不限于)针对特定用途的适销性和/或适用性的暗示保证。本文假定您熟悉所演示的编程语言以及用于创建和调试过程的工具。Microsoft 的支持人员可以帮助解释某个特定过程的功能,但是他们不会修改这些示例以提供额外的功能或构建过程以满足您的特殊需要。如果您的编程经验不够丰富,您可能需要与 Microsoft 认证伙伴联系或者拨打 Microsoft 收费咨询电话 (800) 936-5200。有关 Microsoft 认证伙伴的更多信息,请访问下面的 Microsoft Web 站点: http://www.microsoft.com/partner/referral/ (http://www.microsoft.com/partner/referral/) 有关 Microsoft 提供的支持选项的其他信息,请访问下面的 Microsoft Web 站点:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms) @echo off REM FRS_CHECK.CMD - Records the state of FRS SETLOCAL ENABLEEXTENSIONS SET FRSCK=C:/FRS_CHECK if NOT EXIST %FRSCK% (md %FRSCK%) REM run dcdiag dcdiag > %FRSCK%/dcdiag.txt REM For FRS ntfrsutl ds > %FRSCK%/ntfrs_ds.txt ntfrsutl sets > %FRSCK%/ntfrs_sets.txt ntfrsutl inlog > %FRSCK%/ntfrs_inlog.txt ntfrsutl outlog > %FRSCK%/ntfrs_outlog.txt ntfrsutl version > %FRSCK%/ntfrs_version.txt regdmp HKEY_LOCAL_MACHINE/system/currentcontrolset/services/NtFrs/Parameters > %FRSCK%/ntfrs_reg.txt dir //./sysvol /s > %FRSCK%/ntfrs_sysvol.txt REM scan the frs debug logs for errors. findstr /i ":SO: error invalid fail abort warn" %windir%/debug/ntfrs_*.log | findstr /v "IO_PEND ERROR_SUCCESS FrsErrorSuccess" > %FRSCK%/ntfrs_errscan.txt REM For DS replication repadmin /showreps > %FRSCK%/ds_showreps.txt repadmin /showconn > %FRSCK%/ds_showconn.txt |
本文出自 “王吉IT成长路” 博客,转载请与作者联系!
AD复制故障