Partager via


L’ID d’événement 4015 est journalisé et le serveur DNS rencontre une erreur critique

Cet article permet de résoudre le problème dans lequel l’ID d’événement 4015 est journalisé et le serveur DNS (Domain Name Service) rencontre une erreur critique.

Numéro de base de connaissances d’origine : 969488, 2733147

Vous recevez l’ID d’événement 4015 dans l’un des scénarios suivants :

  • Si vous exécutez le rôle DNS sur un contrôleur de domaine en lecture seule (RODC) et qu’un contrôleur de domaine accessible en écriture (DNS d’hébergement) n’est pas accessible, l’événement suivant est enregistré sur le contrôleur de domaine principal.

    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.
    
  • Le serveur DNS ne peut pas accéder à l’objet Active Directory et l’événement suivant est journalisé fréquemment dans le journal des événements du serveur 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."
    
  • Dans une forêt ou un domaine situé dans des zones DNS (Domain Name System) intégrées Active Directory, certains contrôleurs de domaine dont le rôle serveur DNS est installé ont été promus et rétrogradés. Certains contrôleurs de domaine promus ne peuvent pas inscrire le SRV, l’hôte A, le pointeur (PTR) ou le serveur de noms (NS) dans les zones DNS intégrées Active Directory, et l’événement suivant est journalisé :

    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 journalise l’ID d’événement DNS 4015 toutes les trois minutes avec le code d’erreur 00002095

Lorsqu’un RODC localise un serveur DNS accessible en écriture pour effectuer l’authentification RSO (ReplicateSingleObject), il exécute une fonction DSGETDC avec les indicateurs suivants définis :

  • DS_AVOID_SELF
  • DS_TRY_NEXTCLOSEST_SITE
  • DS_DIRECTORY_SERVICE_6_REQUIRED
  • DS_WRITEABLE_REQUIRED

Une fois qu’un contrôleur de domaine est retourné à partir de l’appel DSGETDC, il utilise le résultat pour rechercher l’enregistrement NS dans DNS. Si l’appel DSGETDC échoue ou qu’il ne trouve pas l’enregistrement NS du contrôleur de domaine retourné par DSGETDC, l’ID d’événement 4015 est journalisé.

Causes possibles de l’ID d’événement 4015 :

  • Aucun contrôleur de domaine accessible en écriture n’est accessible ou aucun retourné à partir de l’appel DSGETDC.
  • L’appel DSGETDC a réussi, mais le contrôleur de domaine retourné n’a pas le rôle serveur DNS installé ou n’inscrit pas d’enregistrement NS dans DNS.

La commande suivante peut être exécutée à partir du contrôleur de domaine principal pour vérifier quel contrôleur de domaine est retourné à partir de l’appel DSGETDC :

nltest /dsgetdc: DOMAIN.COM /WRITABLE /AVOIDSELF /TRY_NEXT_CLOSEST_SITE /DS_6

DOMAIN.COM se trouve votre nom de domaine.

Pour plus d’informations sur la fonction DSGETDC, consultez la fonction DsGetDcNameA.

Pour résoudre l’une des causes ci-dessus, assurez-vous qu’un contrôleur de domaine accessible en écriture est accessible à partir du contrôleur de domaine principal, que le rôle serveur DNS est installé sur ce contrôleur de domaine et que l’enregistrement NS est inscrit dans DNS pour le contrôleur de domaine accessible en écriture.

L’ID d’événement 4015 est enregistré avec le code d’erreur 00000051B

Ce problème se produit en raison de problèmes d’autorisations. SYSTEM n’est pas le propriétaire de la zone DNS. Vous pouvez activer la journalisation des diagnostics Field Engineering pour identifier la zone DNS et modifier le propriétaire.

Définir le propriétaire de la zone DNS sur SYSTEM

Pour résoudre ce problème, effectuez les étapes suivantes :

  1. Lorsque vous voyez l’erreur DNS dans les journaux des événements du serveur DNS une fois la journalisation activée, arrêtez la journalisation des champs de diagnostic AD en définissant la valeur de Registre suivante sur 0 :

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\15 Field Engineering

  2. Mettre en corrélation l’heure exacte de l’ID d’événement 4015 à l’ID d’événement du service d’annuaire 1644 et identifier la partition du répertoire d’application DNS.

  3. Ouvrez l’outil ADSI Edit (Adsiedit.msc), puis accédez à l’emplacement LDAP de l’objet identifié dans l’ID d’événement 1644, qui correspond à l’ID d’événement 4015.

  4. Cliquez avec le bouton droit sur la zone, accédez à Propriétés>Avancées>, puis vérifiez que le propriétaire est défini sur SYSTEM.

L’ID d’événement 4015 est enregistré avec un code d’erreur étendu (ADMIN_LIMIT_EXCEEDED)

Ce problème se produit lorsque le service serveur DNS atteint la dnsRecord limite d’attributs à valeurs multiples pour l’objet dnsNode dans Active Directory. Dans les zones DNS intégrées Active Directory, les noms DNS sont représentés par dnsNode des objets et les enregistrements DNS sont stockés en tant que valeurs dans dnsRecord les attributs des dnsNode objets. Les enregistrements de ressources DNS des contrôleurs de domaine rétrogradés ne seront pas supprimés automatiquement des dnsRecord attributs d’objets dnsNode dans la zone correspondante de la partition Active Directory associée. Par exemple :

DC=..TrustAnchors,CN=MicrosoftDNS,DC=ForestDnsZones,DC=xxx,DC=xxx

Lorsque des enregistrements supplémentaires sont ajoutés à dnsRecord des attributs d’objets, les entrées orphelines des contrôleurs de dnsNode domaine rétrogradés entraînent l’erreur ADMIN_LIMIT_EXCEEDED.

Pour vérifier le nombre actuel d’enregistrements dans chaque partition, exécutez les commandes suivantes 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

La sortie affiche le nombre actuel d’entrées dans dnsRecord les attributs de la zone intégrée Active Directory correspondante. Par exemple :

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

Supprimer les entrées orphelines des contrôleurs de domaine indiqués

Pour résoudre ce problème, supprimez toutes les entrées orphelines des contrôleurs de domaine indiqués dans les zones. Pour vérifier et supprimer sélectivement les entrées, exécutez les applets de commande Windows PowerShell suivantes :

Get-DnsServerResourceRecord -ZoneName trustanchors -RRType Ns
Remove-DnsServerResourceRecord -zonename trustanchors -RRType Ns -Name “@” -RecordData DC.contoso.com

Si vous devez supprimer plusieurs enregistrements de ressources (RR) pour un seul hôte, exécutez les applets de commande suivantes :

$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
}
}

Activer la journalisation du débogage avec TroubleShootingScript (TSS)

Pour démarrer des traces sur le serveur DNS à l’aide de TSS, exécutez l’applet de commande suivante :

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

Note

La journalisation des traces s’arrête automatiquement une fois l’ID d’événement 4015 journalisé.

Pour plus d’informations, consultez Collecter les informations clés avant de contacter le support Microsoft.