Lorsque vous remettez en ligne un serveur de catalogue global obsolète, des objets en attente peuvent subsister

Traductions disponibles Traductions disponibles
Numéro d'article: 314282 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous remettez en ligne un contrôleur de domaine ou un serveur de catalogue global qui a été hors connexion pendant longtemps, les problèmes suivants peuvent survenir :
  • Les messages électroniques ne sont pas remis à un utilisateur dont l'objet utilisateur a été déplacé entre des domaines. Après avoir remis le contrôleur de domaine ou serveur de catalogue global obsolète en ligne, les deux instances de l'objet utilisateur apparaissent dans le catalogue global. Les deux objets ont la même adresse électronique, par conséquent, les messages ne peuvent pas être remis.
  • Un compte utilisateur qui n'existe plus apparaît toujours dans la liste d'adresses globale.
  • Un groupe universel qui n'existe plus apparaît toujours dans le jeton d'accès d'un utilisateur.
Ces problèmes peuvent se produire si le contrôleur de domaine ou serveur de catalogue global est resté hors connexion plus longtemps que la valeur du paramètre de durée de vie de désactivation.

Cause

Un contrôleur de domaine (qui peut également être un serveur de catalogue global), qui a été hors connexion plus longtemps que le paramètre de durée de vie de désactivation (par défaut, 60 jours), peut contenir des objets qui ont été supprimés sur les autres contrôleurs de domaine ou serveurs de catalogue global. En outre, les enregistrements désactivés pour ces objets peuvent ne plus exister. Lorsque vous remettez le contrôleur de domaine obsolète en ligne, il ne peut pas être averti des suppressions d'objets. Si des objets sont modifiés, ils sont réactivés dans le reste du domaine.

Pour les objets en attente, répliqués en contextes d'appellation en lecture/écriture, le comportement standard (Perdre la cohérence de la réplication) consiste, pour le contrôleur de domaine de réception, à recréer les objets qui ne se trouvent pas déjà dans la base de données locale (DIT). Ces objets sont ensuite à nouveau répliqués vers le contrôleur de domaine d'origine, recréant effectivement les objets supprimés. Si l'objet ne doit pas du tout exister dans Active Directory (par exemple, s'il a été réintroduit par un contrôleur de domaine obsolète), vous pouvez le supprimer à l'aide des outils standard (tels que l'utilitaire Adsiedit ou le composant logiciel enfichable Utilisateurs et ordinateurs Active Directory).

Il est très simple de supprimer des objets en attente pour les contextes d'appellation en lecture/écriture. Cet article décrit comment supprimer des objets en attente qui sont déjà apparus dans des contextes d'appellation de catalogue global (donc, en lecture seule). Pour plus d'informations sur les problèmes de désactivation, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
216993 Durée de vie utile d'une sauvegarde de l'état du système Active Directory
Pour plus d'informations sur les objets en attente dans des copies en lecture/écriture de contextes d'appellation, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
317097 Les objets en attente empêchent la réplication Active Directory

Résolution

Pour résoudre ce problème, procurez-vous le dernier Service Pack pour Windows 2000. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
260910 Comment faire pour obtenir le dernier Service Pack Windows 2000
Remarque Avant d'installer ce correctif, lisez la section « Plus d'informations » de cet article. La section « Plus d'informations » contient des informations importantes sur l'installation et l'utilisation de ce correctif.

La version anglaise de ce correctif doit avoir les attributs de fichier suivants ou ceux d'une version ultérieure :
   Date      Heure  Version            Taille  Nom de fichier
   ------------------------------------------------------------
   16/01/02  22:07  5.0.2195.4685     123 664  Adsldp.dll
   16/01/02  22:07  5.0.2195.4762     130 320  Adsldpc.dll
   16/01/02  22:07  5.0.2195.4016      62 736  Adsmsext.dll
   16/01/02  22:07  5.0.2195.4797     356 112  Advapi32.dll
   16/01/02  22:07  5.0.2195.4797      41 744  Basesrv.dll
   11/12/01  03:33  5.0.2195.4571      82 704  Cmnquery.dll
   16/01/02  22:07  5.0.2195.4141     133 904  Dnsapi.dll
   16/01/02  22:07  5.0.2195.4379      91 408  Dnsrslvr.dll
   11/12/01  03:33  5.0.2195.4534      41 744  Dsfolder.dll
   11/12/01  03:33  5.0.2195.4534     156 944  Dsquery.dll
   11/12/01  03:33  5.0.2195.4574     110 352  Dsuiext.dll
   16/01/02  22:16  5.0.2195.4814     521 488  Instlsa5.dll
   16/01/02  22:07  5.0.2195.4630     145 680  Kdcsvc.dll

   27/11/01  01:33  5.0.2195.4680     199 440  Kerberos.dll
   16/01/02  22:07  5.0.2195.4829     708 880  Kernel32.dll
   04/09/01  17:32  5.0.2195.4276      71 024  Ksecdd.sys
   09/01/02  19:50  5.0.2195.4814     503 568  Lsasrv.dll
   09/01/02  19:50  5.0.2195.4814      33 552  Lsass.exe
   08/12/01  01:05  5.0.2195.4745     107 280  Msv1_0.dll
   16/01/02  22:07  5.0.2195.4594     306 960  Netapi32.dll
   16/01/02  22:07  5.0.2195.4686     359 184  Netlogon.dll
   16/01/02  22:07  5.0.2195.4797     476 432  Ntdll.dll
   16/01/02  22:07  5.0.2195.4827     916 240  Ntdsa.dll
   15/01/02  09:34  5.0.2195.4839   1 688 192  Ntkrnlmp.exe
   15/01/02  09:36  5.0.2195.4839   1 687 744  Ntkrnlpa.exe
   15/01/02  09:36  5.0.2195.4839   1 708 480  Ntkrpamp.exe
   15/01/02  09:34  5.0.2195.4839   1 665 856  Ntoskrnl.exe
   16/01/02  22:07  5.0.2195.4827     388 368  Samsrv.dll
   16/01/02  22:07  5.0.2195.4583     128 784  Scecli.dll
   16/01/02  22:07  5.0.2195.4600     299 792  Scesrv.dll
   16/01/02  22:07  5.0.2195.4600      48 400  W32time.dll
   06/11/01  20:43  5.0.2195.4600      56 592  W32tm.exe
   16/01/02  22:07  5.0.2195.4827     125 712  Wldap32.dll
				
Remarque Ce correctif a été remplacé par un correctif cumulatif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
326797 Certains correctifs Windows 2000 Active Directory peuvent entrer en conflit avec Windows 2000 Service Pack 3

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la liste des produits concernés. Ce problème a été corrigé pour la première fois dans Windows 2000 Service Pack 3.

Plus d'informations

Ce correctif fournit la prise en charge de la suppression des objets en attente. Cette procédure requiert le GUID d'objet d'un contrôleur de domaine ayant une copie en lecture/écriture de l'objet et le GUID d'objet de l'objet lui-même. Si vous devez supprimer plusieurs objets, vérifiez si l'un d'eux se trouve dans une relation parent/enfant (pour ce faire, servez-vous des noms uniques des objets). Le cas échéant, classez les suppressions pour que tous les objets enfants soient supprimés avant leur objet parent.

Pour savoir dans quel domaine se trouve un objet (et à partir de là, déterminer le nom d'un contrôleur de domaine ayant une copie en lecture/écriture de l'objet), la meilleure solution consiste à établir un nom unique de l'objet. Pour cela, recherchez le nom (ou des parties du nom) de la liste de distribution, du groupe ou de l'utilisateur dupliqué à l'aide de l'outil Ldp.exe des outils de support :
  1. Démarrez Ldp.exe.
  2. Dans le menu Connection, cliquez sur Connect.
  3. Tapez le nom d'un catalogue global. Tapez 3268 pour le port auquel se connecter. Cliquez sur OK.
  4. Dans le menu Connection, cliquez sur Bind. Tapez les informations d'identification correctes si les vôtres ne suffisent pas pour lancer une requête sur l'ensemble du contenu du catalogue global. Cliquez sur OK.
  5. Dans le menu View, cliquez sur Tree. Tapez le nom unique de la racine de forêt. Cliquez sur OK.
  6. Cliquez avec le bouton droit sur la racine de forêt dans la liste d'arborescence, puis cliquez sur Search.
  7. Créez un filtre sous la forme suivante :
    ([attribut]=[valeur])
    Remplacez [attribut] et [valeur] par les données appropriées. Par exemple, pour créer un filtre retournant les résultats dans lesquels la valeur de l'attribut sAMAccountName est définie sur le compte d'utilisateur « utilisateur_test », tapez (sAMAccountName=utilisateur_test) dans la zone Filtre. Les attributs cn, userPrincipalName, sAMAccountName, sn, le nom et l'adresse électronique permettent de trouver un objet utilisateur. Pour les objets de groupe, utilisez cn, sAMAccountName ou le nom. Notez que vous pouvez utiliser des astérisques (*) dans le champ [valeur], si nécessaire.

    Pour plus d'informations sur la syntaxe des filtres LDAP (Lightweight Directory Access Protocol), reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/search_filter_syntax.asp
  8. Cliquez sur Subtree en tant qu'étendue de la recherche.
  9. Cliquez sur Options. Dans la boîte de dialogue Search Options, déplacez-vous vers la fin du contrôle Attributes.
  10. Ajoutez objectGUID; à la liste. Cliquez sur OK.
  11. Cliquez sur Run pour exécuter la requête.
  12. Consultez les résultats. Vous devez identifier lequel des objets affichés doit être supprimé du catalogue global. Si l'objet n'existe pas sur une copie en lecture/écriture du contexte d'appellation, cela signifie que vous avez trouvé un objet incorrect.
  13. Si nécessaire, reformulez la requête et réexécutez-la.
  14. Si vous avez identifié l'objet en attente, notez son nom unique et son GUID d'objet.
Après avoir obtenu le nom unique de l'objet, identifiez le domaine dans lequel il se trouve en consultant la partie « dc= » du nom unique. Par exemple, le domaine de cn=Prénom Nom,cn=Utilisateurs,dc=nom1,dc=nom2,dc=com est nom1.nom2.com. Ensuite, recherchez un contrôleur de domaine pour le domaine (il peut également s'agir d'un serveur de catalogue global).

Exécutez la commande repadmin /showreps nom-cd (où nom-cd est le nom du contrôleur de domaine que vous avez trouvé). Repadmin.exe est fourni avec les outils de support. À partir de la sortie, notez le GUID d'objet du contrôleur de domaine :
C:\>repadmin /showreps some-DC
Votre-Site\certain-CD
Options DSA : (aucune)
GUID d'objet : d1fa2207-ae85-466f-88fd-908f1c623ea7
Installez le correctif décrit dans cet article sur tous les serveurs de catalogue global ayant des objets en attente. Ce correctif n'est pas requis sur les contrôleurs de domaine que vous identifiez comme contenant des copies en lecture/écriture des objets en attente, à moins qu'ils ne soient également des serveurs de catalogue global contenant des objets en attente. Chaque serveur de catalogue global sur lequel vous essayez d'exécuter l'opération de suppression doit être doté d'une connectivité réseau au contrôleur de domaine que vous avez identifié.

Pour quelques objets

Si vous ne disposez que de quelques objets et catalogues globaux, procédez comme suit pour supprimer les objets à l'aide de l'outil Ldp.exe :
  1. Ouvrez une session sur chaque serveur de catalogue global intégrant le correctif (et contenant une copie de l'objet en attente) à l'aide des informations d'identification de l'administrateur de l'entreprise.
  2. Démarrez Ldp.exe et connectez-vous au port 389 sur le contrôleur de domaine local (laissez la zone Server [Serveur] vide).
  3. Dans le menu Connection, cliquez sur Bind. Laissez toutes les zones vides (vous êtes déjà connecté en tant qu'administrateur de l'entreprise).
  4. Dans le menu Browse, cliquez sur Modify.
  5. Laissez la zone Dn vide.
  6. Dans la zone Attribute, tapez RemoveLingeringObject.
  7. Tapez <GUID= pour la valeur.
  8. Ajoutez le GUID du contrôleur de domaine que vous avez précédemment obtenu de la commande repadmin /showreps nom_cd.

    Remarque Dans cet exemple, nom_cd est un contrôleur de domaine hébergeant le contexte d'appellation accessible en écriture de l'objet en attente.
  9. Ajoutez > : <GUID=. N'oubliez pas les espaces.
  10. Ajoutez le GUID de l'objet en attente.
  11. Ajoutez >.
  12. La valeur complète doit ressembler à ce qui suit :
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484> : <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
  13. Cliquez sur l'opération Replace, puis sur Entrée dans l'interface. La commande apparaît désormais dans la liste Entrée.
  14. Cliquez sur Run pour exécuter la requête. Le côté droit de la fenêtre Ldp.exe contient le résultat de la requête. Cette entrée ressemble à ceci :
    ***Call Modify...
    ldap_modify_s(ld, '(null)',[1] attrs);
    Modified "".

Pour un grand nombre d'objets

Si vous disposez de nombreux objets et serveurs de catalogue global, il peut être plus simple d'utiliser les scripts suivants :
  1. Collez le texte ci-dessous dans un nouveau fichier nommé Walkservers.cmd d'un nouveau dossier :
    for /f %%j in (server-list.txt) do walkobjects %%j
  2. Collez le texte suivant dans un fichier nommé Walkobjects.cmd :
    for /f "delims=@" %%i in (object-list.txt) do cscript //NoLogo MODIFYROOTDSE.VBS %1 "%%i" >>update-%1.log


    Remarque Il s'agit d'une seule ligne de commande. Les sauts de ligne sont insérés ici pour des raisons de lisibilité.
  3. Collez le texte suivant dans un fichier nommé Modifyrootdse.vbs :
    '********************************************************************
    '*
    '* Fichier :        MODIFYROOTDSE.VBS
    '* Date de création :     Janvier 2002
    '* Version :     1.0
    '*
    '* Fonction principale : Écrit des informations Active Directory pour nettoyer des 
    '* objets selon : F314282.
    '* Utilisation : Modifyrootdse.vbs <ServeurCible> <PAIRE GUID>
    '* Paramètres entrés dans le script à l'aide d'une paire de fichiers de commandes.
    '*
    '* Copyright (C) 2002 Microsoft Corporation
    '*
    '********************************************************************
    
    OPTION EXPLICIT
    ON ERROR RESUME NEXT
    
    Dim objDomain
    Dim ObjValue, strServerName, adsLdapPath 
    Dim i
    
    'Obtient les arguments de ligne de commande
        if Wscript.arguments.count <> 2 Then
         Print "Invalid Number of Parameters. Use with WalkServers.CMD and WalkObjects.CMD"
        WScript.quit
    End If
    
        strServerName = Wscript.arguments.item(0)
        ObjValue = Wscript.arguments.item(1)
    
        adsLdapPath = "LDAP://" & strServerName & "/RootDSE"
    
        Set objDomain = GetObject(adsLdapPath)
        If Err.Number <> 0 Then
            WScript.Echo "Error opening ROOTDSE. Error number is: " & Err.Number & ". Error description is: " & Err.Description & "."
        Set objDomain = Nothing
            WScript.quit
        End If
    
        objDomain.Put "RemoveLingeringObject", ObjValue
        objDomain.Setinfo
    
        If Err.Number = 0 Then
           WScript.Echo "Object " & ObjValue & " was removed."
    Else
           WScript.Echo "Object " & ObjValue & " could not be removed. Error number is: " & Err.Number & ". Error description is: " & Err.Description & "."
        End If
    WScript.Quit
    						</Formatting>
    REMARQUE : si vous démarrez Modifyrootdse.vbs manuellement, veillez à placer les paramètres contenant des espaces entre guillemets.

  4. Créez une liste de tous les serveurs de catalogue global contenant des objets en attente. Placez les noms des serveurs dans un fichier Liste-serveurs.txt dans le même dossier. Utilisez les noms de domaine complets pour éviter les recherches de suffixes DNS.
  5. Ajoutez les paires de GUID que vous avez précédemment obtenues au cours de cette procédure à un fichier Liste-objets.txt. Ajoutez une paire par ligne, avec la syntaxe suivante :
    <GUID = GUID du CD> : <GUID = GUID d'objet>
    Un exemple d'entrée ressemble à ceci :
    <GUID=85dd0fee-de1b-461c-b9c0-27e9e8249484> : <GUID=eeeb70e5-4501-4895-a572-94a87e8f8ac7>
  6. Exécutez le fichier Walk-servers.cmd. Les scripts génèrent un fichier journal nommé Update-nom-serveur.log pour chaque serveur de catalogue global répertorié dans le fichier Liste-serveurs.txt. Les fichiers journaux contiennent une ligne pour chaque objet à supprimer.
Notez que les erreurs figurant dans les fichiers journaux n'indiquent pas forcément un problème car il n'existe peut-être pas d'objets en attente sur tous les serveurs de catalogue global. Toutefois, les messages d'erreur de type « opération refusée » ou « erreur d'opération » indiquent un problème relatif aux GUID ou à la syntaxe de la valeur. Si ces erreurs se produisent, vérifiez les éléments suivants :
  • Vérifiez que les GUID des contrôleurs de domaine sont les GUID corrects pour les contrôleurs de domaine contenant une copie accessible en écriture du domaine contenant l'objet.
  • Vérifiez que les GUID d'objet identifient des objets en attente dans les contextes d'appellation de catalogue global (en lecture seule).
  • Vérifiez que ce correctif est installé sur tous les contrôleurs de domaine et serveurs de catalogue global que vous utilisez dans le cadre de cette procédure. Vérifiez que vous avez redémarré les serveurs après avoir installé le correctif.

Message d'erreur lors de l'exécution de Walkservers.cmd pour modifier de nombreux objets en attente dans l'environnement

L'objet <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555> : <GUID=514f7510-451a-4297-8129-9b4c8ab79axx> n'a pas pu être supprimé. Le numéro d'erreur est : -2147016672. La description d'erreur est : .

Cause

Cette erreur se produit parce que le script est exécuté sur le GUID d'un contrôleur de domaine qui ne contient pas de partition accessible en écriture contenant l'objet en attente. Vérifiez l'emplacement de l'objet en attente à l'aide de l'outil Ldp.exe.

Exemple

Dans l'exemple suivant, l'objet en attente à l'origine de la suppression du message d'erreur est situé dans le domaine corp.company.local. Toutefois, l'objet <GUID=ae856ce5-839a-4e44-b2fb-f37082ca2555> du fichier Liste-objets.txt est associé à un contrôleur de domaine du domaine company.local qui ne dispose pas de partition accessible en écriture pour corp.company.local.
ldap_search_s(ld, "DC=company,DC=local", 2, "(cn=User*)", attrList,  0, &msg) Result <0>: (null) Matched DNs: Getting 4 entries: >> Dn: CN=User\, Joe,OU=Exec,OU=Corporate Users,DC=corp,DC=company,DC=local 1> canonicalName: corp.company.local/Corporate Users/Exec/User, Joe; 1> cn: User, Joe; 1> description: CEO; 1> displayName: User, Joe; 1> distinguishedName: CN=User\, Joe,OU=Exec,OU=Corporate Users,DC=corp,DC=company,DC=local; 4> objectClass: top; person; organizationalPerson; user; 1> objectGUID: 814226ed-3414-4193-b96d-3a5ea4bf9351; 1> name: User, Joe; >> Dn: CN=User\, Joe,OU=Migration,DC=corp,DC=company,DC=local 1> canonicalName: corp.company.local/Migration/User, Joe; 1> cn: User, Joe; 1> description: Disabled Account; 1> displayName: User, Joe; 1> distinguishedName: CN=User\, Joe,OU=Migration,DC=corp,DC=company,DC=local; 4> objectClass: top; person; organizationalPerson; user; 1> objectGUID: 514f7510-451a-4297-8129-9b4c8ab79axx; 1> name: User, Joe; 
Obtenez le GUID d'un serveur du domaine corp.company.local en exécutant la commande suivante :
repadmin /showreps nom-CD
Dans cette commande, nom-CD est un espace réservé pour le nom d'un contrôleur de domaine du domaine corp.company.local. Modifiez le GUID dans le fichier Liste-objets.txt pour qu'il corresponde au GUID du contrôleur de domaine du domaine corp.company.local. Dans cet exemple, le fichier Liste-objets.txt apparaîtra en tant que :
<GUID=c4fd9c30-b433-40a1-a862-9fdf1f804dc8> : <GUID=514f7510-451a-4297-8129-9b4c8ab79a7c>
Le premier GUID est celui du contrôleur de domaine appartenant au domaine corp.company.local. Le second GUID est celui de l'objet en attente provenant de la recherche LDAP (Lightweight Directory Access Protocol).

Lorsque vous exécutez Walk-servers.cmd, la commande se termine à présent avec succès, sans l'erreur -2147016672.

Si vous ne parvenez pas à résoudre les erreurs des fichiers journaux à l'aide de ces méthodes, il se peut que vous rencontriez un problème différent. Contactez les services de Support technique Microsoft pour obtenir de l'aide.

Pour plus d'informations sur la façon d'obtenir un correctif pour Windows 2000 Datacenter Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
265173 Le programme Datacenter et Windows 2000 Datacenter Server
Pour plus d'informations sur la façon d'installer plusieurs correctifs en ne redémarrant qu'une seule fois, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
296861 Comment faire pour installer plusieurs mises à jour ou correctifs Microsoft Windows en un seul redémarrage
Pour plus d'informations sur la façon d'installer simultanément Windows 2000 et des correctifs pour Windows 2000, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
249149 Installation de Microsoft Windows 2000 et des correctifs pour Windows 2000

Propriétés

Numéro d'article: 314282 - Dernière mise à jour: mercredi 18 mai 2011 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Professionnel
  • Microsoft Windows 2000 Server
Mots-clés : 
kbhotfixserver kbqfe kbbug kbdirservices kbfix kbwin2000presp3fix kbwin2000sp3fix KB314282
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com