网络与域名解析

事件 ID 4015 - DNS 服务器遇到严重错误 - Windows Server

· 52CE 我爱测

原始 KB 数: 969488、2733147 概要 域名服务(DNS)服务器事件 ID 4015 指示运行 DNS 服务器角色的域控制器(DC)遇到严重错误。 事件说明包括一个错误代码,用于标识所发生问题的类型。 本文介绍触发事件 ID 4015 的三种常见方案: - 错误代码00002095:运行 DNS 的 Read-Only 域控制器(RODC)无法连接到可写域控制器 - 错误代码 0000051B:由于权限问题,DNS 服务器无法访问 Activ

原始 KB 数: 969488、2733147

概要

域名服务(DNS)服务器事件 ID 4015 指示运行 DNS 服务器角色的域控制器(DC)遇到严重错误。 事件说明包括一个错误代码,用于标识所发生问题的类型。

本文介绍触发事件 ID 4015 的三种常见方案:

  • 错误代码00002095:运行 DNS 的 Read-Only 域控制器(RODC)无法连接到可写域控制器
  • 错误代码 0000051B:由于权限问题,DNS 服务器无法访问 Active Directory 对象
  • ADMIN_LIMIT_EXCEEDED:与 DNS 相关的 Active Directory 对象包含来自降级域控制器的孤立条目过多

查看事件 ID 4015 说明中的错误代码。 然后,按照你的特定情形进行故障排除步骤。

症状

DNS 服务器可以在多种不同的方案中生成事件 ID 4015。 使用事件说明中的错误代码来区分你遇到的方案,然后从以下列表中选择最接近的方案:

  • RODC DNS 服务器每三分钟记录一次 DNS 事件 ID 4015(错误代码00002095)。 这种情况可能在以下情况下发生:

    • Read-Only 域控制器(RODC)运行 DNS 角色。
    • RODC 无法连接到运行 DNS 角色的可写域控制器(DC)。

    在此方案中,RODC 记录类似于以下示例的事件:

    Log Name: DNS Server
    Source: Microsoft-Windows-DNS-Server-Service
    Date: date time
    Event ID: 4015
    Task Category: None
    Level: Error
    Keywords: Classic
    User: N/A
    Computer: <ComputerName>
    Description:
    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "00002095: SvcErr: DSID-03210A6A, problem 5012 (DIR_ERROR), data 16". The event data contains the error.
    
  • DNS 服务器记录事件 ID 4015(错误代码 0000051B)。 如果 DNS 服务器无法访问 Active Directory 对象,则可能会出现这种情况。 在此方案中,DNS 服务器重复记录类似于以下示例的事件:

    Type: Error
    Source: DNS
    Category: None
    Event ID: 4015
    Description:
    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "0000051B: AttrErr: DSID-xxxx, #1: 0:0000051B: DSID-xxxx, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 20119(nTSecurityDescriptor)". The eventdata contains the error."
    
  • DNS 服务器记录事件 ID 4015(扩展错误代码(ADMIN_LIMIT_EXCEEDED))。 此问题可能发生在以下方案中:

    • 林或域使用 Active Directory 集成的 DNS 区域。
    • 一些充当 DNS 服务器的 DC 已升级和降级。 某些升级的 DC 无法在 DNS 区域中注册 DNS 记录。 此问题包括服务器(SRV)记录、主机(A)记录、指针(PTR)记录或名称服务器(NS)记录。 受影响的 DC 日志事件 ID 4015,事件的说明类似于以下示例:
    The DNS server has encountered a critical error from the Active Directory. Check that the Active Directory is functioning properly. The extended error debug information (which may be empty) is "00002024: SvcErr: DSID-02050BBD, problem 5008 (ADMIN_LIMIT_EXCEEDED), data -1026". The event data contains the error.
    

RODC DNS 服务器每三分钟记录一次 DNS 事件 ID 4015(错误代码00002095)

原因

RODC 通过复制一个或多个可写 DC 的更改来保持最新状态。 作为 DNS 服务器运行的 RODC 使用 replicateSingleObject 操作来确保它具有最新的 DNS 信息。 在此方案中,RODC 尝试更新名称服务器 (NS) 记录。

若要支持此功能,RODC DNS 服务器必须能够根据需要找到可写 DC DNS 服务器。 若要查找服务器,RODC 使用其中一个 DsGetDC 函数(如 DsGetDCNameA 或 DsGetDCNameW)以及以下标志:

  • DS_AVOID_SELF
  • DS_TRY_NEXTCLOSEST_SITE
  • DS_DIRECTORY_SERVICE_6_REQUIRED
  • DS_WRITEABLE_REQUIRED

该 DsGetDC 函数返回一个 DC。 RODC 会在此 DC 中查找适当的 NS 记录。 在以下任一情况下,RODC 记录事件 ID 4015:

  • 标识的 DC 不是 DNS 服务器,也不列出相应的 NS 记录。
  • 该函数未识别可写 DC。

决议

  1. 若要检查函数的结果 DsGetDC ,请在 RODC 上打开 Windows 命令提示符窗口,然后运行以下命令:

    nltest /dsgetdc: <DomainFQDN> /WRITABLE /AVOIDSELF /TRY_NEXT_CLOSEST_SITE /DS_6
    

    注意

    在此命令中, <DomainFQDN> 表示域的完全限定域名(FQDN)。

  2. 如果命令输出列出了域控制器,请检查该域控制器的配置。 如果命令未找到 DC,请更新 DNS 拓扑,以确保 RODC 可以连接到相应的 DC。 在这两种情况下,请确保 DC 满足以下条件:

    • DC 是可写的。
    • DC 已经安装了 DNS 服务器角色。
    • DC 上的 DNS 记录已正确配置。

DNS 服务器日志事件 ID 4015(错误代码 0000051B)

访问问题由以下条件之一引起:

  • SYSTEM 帐户不是 DNS 区域的所有者。
  • 域的用户组没有正确的成员,包括经过身份验证的用户组。 在这种情况下,在 DNS 服务器运行至少 10 小时之前,问题可能不会出现,并且它偶尔发生在多个 DC 上。

SYSTEM 帐户不是 DNS 区域的所有者 - 解析

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。

若要解决此问题,请执行以下步骤:

  1. 若要在生成事件 ID 4015 的 DC 上启用现场工程诊断日志记录,请按照 “启用现场工程”诊断事件日志记录中的说明进行作。

  2. 重现问题。

  3. 若要停止现场工程诊断日志记录,请将 15 Field Engineering 注册表项设置为 0。 此项位于以下子项下:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\

  4. 请注意发生事件 ID 4015 的时间,并查找同时发生的目录服务事件 ID 1644 实例。 在该事件 ID 1644 实例中,请注意事件标识的对象 FQDN。 该对象应表示 DNS 区域。

  5. 打开 ADSI 编辑 (Adsiedit.msc) 工具,并转到 DNS 区域对象的 LDAP 位置。

  6. 右键单击区域对象,然后选择 “属性>安全性>高级”。

  7. 确保 所有者 设置为 SYSTEM。

域的用户组没有正确的成员 - 解决方法

若要解决此问题,请执行以下步骤:

  1. 使用管理员组成员帐户登录到 DC。 还可以通过添加 /domain 参数在管理计算机上运行此过程。

  2. 若要列出用户组的当前成员,请打开 Windows 命令提示符窗口,然后运行以下命令:

    net localgroup users /domain
    
  3. 该组应具有以下成员:

    • 域用户
    • NT AUTHORITY\Authenticated Users
    • NT AUTHORITY\INTERACTIVE(交互式)
  4. 如果缺少一个或多个列出的组,请将它们添加为组成员。 例如,若要添加 NT AUTHORITY\Authenticated Users,请在命令提示符处运行以下命令:

    net localgroup users "NT AUTHORITY\Authenticated Users" /add /domain
    
  5. 等待更改在域控制器(DC)之间复制。

  6. 在域中的所有 DC 上,重启 DNS 服务器服务。

DNS 服务器日志事件 ID 4015(扩展错误代码(ADMIN_LIMIT_EXCEEDED))

原因

如果 Active Directory 中对象的多值 dnsRecord 属性 dnsNode 包含太多值,则 DNS 服务器服务将生成此错误代码。

Active Directory 将 DNS 名称表示为 dnsNode-class 对象。 它将 DNS 记录存储为这些对象的属性中的 dnsRecord 值。 将一台 DC 提升为森林中的 DNS 服务器时,Active Directory 会自动将相应的 DNS 记录添加到新的和现有的 dnsNode 对象中。 但是,在降级充当 DNS 服务器的 DC 时,Active Directory 不会自动清理相关的 DNS 对象和属性。 这些对象和属性会被保留为“孤立对象”。在单一林中经过多次降级和提升操作后,孤立的值可能累积到某个点,使属性 dnsRecord 达到其最大容量。

若要检查每个 DNS 相关分区中对象的当前记录数, repadmin 请运行以下命令:

repadmin /showattr . "CN=MicrosoftDNS,CN=System,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues >c:\temp\dns_Domain.txt
repadmin /showattr . "CN=MicrosoftDNS,DC=DomainDnsZones,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues>c:\temp\dns_DomainDnsZones.txt
repadmin /showattr . "CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com" /subtree /filter:"(objectclass=dnsnode)" /atts:"dnsRecord" /allvalues >c:\temp\dns_ForestDnsZones.txt

输出显示相应的 Active Directory dnsRecord 对象的dnsNode属性中包含的当前条目数。 例如,以下摘录显示引用单个 dnsNode 对象的命令输出。 此 dnsRecord 对象的属性有 1,280 个值:

DN: DC=@,DC=..TrustAnchors,CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com
1280> dnsRecord: <48 byte blob>;

注意

输出 repadmin 不显示实际值。 它将每个值表示为“blob”。此摘录显示单个值。

决议

若要解决此问题,必须删除所有降级的域控制器的孤儿条目。 若要检查每个区域并选择性地删除相应的记录,请打开管理 Windows PowerShell 窗口,并为每个区域运行以下 cmdlet:

Get-DnsServerResourceRecord -ZoneName "<ZoneName>" -RRType "<ResourceRecordType>"
Remove-DnsServerResourceRecord -zonename "<ZoneName>" -RRType "<ResourceRecordType>" -Name "<ResourceRecordName>" -RecordData "<DC_FQDN>"

在以下示例中,第一个命令检索 trustanchors 区域的所有名称服务器记录值。 第二个命令选择名称为“@”且与名称为“DC-10.contoso.com”的 DC 相关的任何记录。然后,它会删除这些记录。

Get-DnsServerResourceRecord -ZoneName "trustanchors" -RRType "NS"
Remove-DnsServerResourceRecord -zonename "trustanchors" -RRType "NS" -Name "@" -RecordData "dc2.contoso.com"

以下示例演示了一个脚本,该脚本使用这些命令删除单个主机的多个资源记录值:

$AllNsRecords = Get-DnsServerResourceRecord -ZoneName "trustanchors" -RRType "NS"
Foreach($Record in $AllNsRecords){
If($Record.recorddata.nameserver -like "*dc2*"){
$Record | Remove-DnsServerResourceRecord -ZoneName "trustanchors"
}
}
$AllSrvRecords = Get-DnsServerResourceRecord -ZoneName "_msdcs.contoso.com" -RRType "Srv"
Foreach($Record in $AllSrvRecords){
If($Record.recorddata.domainname -like "*dc2*"){
$Record | Remove-DnsServerResourceRecord -ZoneName "_msdcs.contoso.com"
}
}

数据收集

如果必须联系Microsoft支持部门,可以使用 来自 TroubleShootingScript 工具集(TSS)的脚本 来收集有关 DNS 问题的信息并提供背景信息。 有关如何在解决 DNS 问题时使用 TSS 的详细信息,请参阅“DNS 故障排除指南”中的 数据收集 。

具体而言,使用以下命令收集有关事件 ID 4015 的跟踪数据:

.\TSS.ps1 -Scenario NET_DNSsrv -Mode Verbose -WaitEvent Evt:4015:'DNS Server'

注意

记录事件 ID 4015 后,跟踪日志记录会自动停止。

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
按正文的 Windows / Windows Server 适用版本;保留原文兼容性要求
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。