Freigeben über


Fehler beim Ausführen des Adprep /rodcprep Befehls in Windows Server 2008: Adprep konnte kein Replikat für die Partition DC=DomainDnsZones,DC=Contoso,DC=com kontaktieren.

In diesem Artikel wird ein Problem behoben, das der Adprep /rodcprep Befehl nicht erfolgreich abgeschlossen hat, da der Infrastrukturmaster für mindestens einen Active Directory-NDNCs nicht erreichbar ist.

Ursprüngliche KB-Nummer: 949257

Symptome

Wenn Sie den Adprep /rodcprep Befehl unter Windows Server 2008 ausführen, wird die folgende Fehlermeldung angezeigt:

Adprep konnte kein Replikat für partition DC=DomainDnsZones,DC=Contoso,DC=com kontaktieren

Adprep hat den Vorgang auf partition DC=DomainDnsZones,DC=Contoso,DC=com Skippping to next partition fehlgeschlagen.

Adprep konnte kein Replikat für partition DC=ForestDnsZones,DC=Contoso,DC=com kontaktieren

Bei Adprep ist ein LDAP-Fehler aufgetreten. Fehlercode: 0x0. Server erweiterter Fehlercode: 0x0, Serverfehlermeldung: (null).

Adprep hat den Vorgang auf der Partition DC=ForestDnsZones,DC=Contoso,DC=com Skippping to next partition fehlgeschlagen.

Adprep wurde mit Fehlern abgeschlossen. Nicht alle Partitionen werden aktualisiert.

Ursache

Dieses Problem tritt auf, wenn der Adprep /rodcprep Befehl versucht, den Infrastrukturmaster für jede Anwendungspartition in der Gesamtstruktur zu kontaktieren. Mit dem Befehl werden die Berechtigungen festgelegt, die für die Read-Only-Domänencontrollerreplikation (RODC) erforderlich sind. Der Adprep /rodcprep Befehl schlägt fehl, wenn eine der folgenden Bedingungen erfüllt ist:

  • Die Partition oder die Partitionen, auf die in der Fehlermeldung verwiesen wird, sind nicht mehr vorhanden.
  • Der Infrastrukturmaster für die referenzierten Partitionen oder Partitionen wurde erzwungen herabgestuft oder ist offline.

Lösung

Um dieses Problem zu beheben, wenn die Partition nicht mehr vorhanden ist, führen Sie eine Metadatenbereinigung für die verwaiste Partition mit dem Parameter "remove nc" des Dsmgmt-Tools durch. Weitere Informationen finden Sie auf der folgenden Microsoft-Website:

Partitionsverwaltung

Wenn die angegebene Partition vorhanden ist, geben Sie einen Infrastrukturrollenbesitzer an, der für die Partition online ist. Sie können dies tun, indem Sie das fSMORoleOwner-Attribut für das Objekt manuell ändern, wie im Abschnitt "Weitere Informationen" beschrieben.

Weitere Informationen

Im folgenden Skriptbeispiel wird das fSMORoleOwner-Attribut für das Infrastrukturobjekt des angegebenen Nichtdomänenbenennungskontexts (Non-Domain Naming Context, NDNC) in einen aktiven oder kontaktierbaren Server geändert. Der NDNC in diesem Beispiel ist der Namenskontext "DomainDnsZones,DC=contoso,DC=com NDNC ". Das Skript verwendet den folgenden Befehl:

cscript fixfsmo.vbs DC=DomainDnsZones,DC=contoso,DC=com
'-------fixfsmo.vbs------------------
const ADS_NAME_INITTYPE_GC = 3
const ADS_NAME_TYPE_1779 = 1
const ADS_NAME_TYPE_CANONICAL = 2

set inArgs = WScript.Arguments

if (inArgs.Count = 1) then
    ' Assume the command line argument is the NDNC (in DN form) to use.
    NdncDN = inArgs(0)
Else
    Wscript.StdOut.Write "usage: cscript fixfsmo.vbs NdncDN"
End if

if (NdncDN <> "") then

    ' Convert the DN form of the NDNC into DNS dotted form.
    Set objTranslator = CreateObject("NameTranslate")
    objTranslator.Init ADS_NAME_INITTYPE_GC, ""
    objTranslator.Set ADS_NAME_TYPE_1779, NdncDN
    strDomainDNS = objTranslator.Get(ADS_NAME_TYPE_CANONICAL)
    strDomainDNS = Left(strDomainDNS, len(strDomainDNS)-1)

    Wscript.Echo "DNS name: " & strDomainDNS

    ' Find a domain controller that hosts this NDNC and that is online.
    set objRootDSE = GetObject("LDAP://" & strDomainDNS & "/RootDSE")
    strDnsHostName = objRootDSE.Get("dnsHostName")
    strDsServiceName = objRootDSE.Get("dsServiceName")
    Wscript.Echo "Using DC " & strDnsHostName

    ' Get the current infrastructure fsmo.
    strInfraDN = "CN=Infrastructure," & NdncDN
    set objInfra = GetObject("LDAP://" & strInfraDN)
    Wscript.Echo "infra fsmo is " & objInfra.fsmoroleowner

    ' If the current fsmo holder is deleted, set the fsmo holder to this domain controller.

    if (InStr(objInfra.fsmoroleowner, "\0ADEL:") > 0) then

        ' Set the fsmo holder to this domain controller.
        objInfra.Put "fSMORoleOwner",  strDsServiceName
        objInfra.SetInfo

        ' Read the fsmo holder back.
        set objInfra = GetObject("LDAP://" & strInfraDN)
        Wscript.Echo "infra fsmo changed to:" & objInfra.fsmoroleowner

    End if

End if

Um den Infrastrukturmaster für eine Partition zu ermitteln, fragen Sie das fSMORoleOwner-Attribut auf das Infrastrukturobjekt unter dem betreffenden Namenskontextstamm ab. Fragen Sie z. B. das fSMORoleOwner-Attribut im CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com-Namenskontextstamm ab, um den Infrastrukturmaster für die DC=DomainDnsZones,DC=contoso,DC=com-Partition zu ermitteln. Fragen Sie entsprechend das fSMORoleOwner-Attribut für das CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com-Namenskontextstamm ab, um den Infrastrukturmaster für die DC=ForestDnsZones,DC=contoso,DC=com-Partition zu ermitteln.

Sie können Tools wie das LDP-Tool, das Active Directory Service Interfaces (ADSI)-Bearbeitungstool und das ldifde-Tool verwenden, um diese Abfragen ausführen zu können. Die folgende Abfrage verwendet z. B. das Idifde-Tool:

ldifde -f Infra_DomainDNSZones.ldf -d "CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com" -l fSMORoleOwner

Diese Abfrage gibt den Besitzer der Infrastrukturmasterrolle für die DC=DomainDnsZones,DC=contoso,DC=com-Partition an die Datei Infra_DomainDNSZones.ldf zurück.

Notiz

Sie können den Adprep /rodcprep Befehl mehrmals ausführen, ohne die Gesamtstruktur zu beschädigen. Vorgänge, die in früheren Ausführungen des Rodcprep-Befehls abgeschlossen wurden, werden nicht wiederholt.

Wenn Sie versuchen, den rodcprep Befehl in einer isolierten Umgebung auszuführen, muss der Infrastrukturmaster für jede Domäne und für jede Anwendungsverzeichnispartition innerhalb der Umgebung verfügbar sein, damit der Vorgang erfolgreich ausgeführt werden kann.