Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Fel när du kör
Den här artikeln löser ett problem med att Adprep /rodcprep kommandot inte har slutförts eftersom infrastrukturhanteraren för en eller flera active directory-NDNCs inte kan nås.
Ursprungligt KB-nummer: 949257
Symptom
När du kör Adprep /rodcprep kommandot på Windows Server 2008 får du följande felmeddelande:
Adprep kunde inte kontakta en replik för partitionen DC=DomainDnsZones,DC=Contoso,DC=com
Adprep misslyckades med åtgärden på partitionen DC=DomainDnsZones,DC=Contoso,DC=com Hoppar över till nästa partition.
Adprep kunde inte kontakta en replik för partitionen DC=ForestDnsZones,DC=Contoso,DC=com
Adprep påträffade ett LDAP-fel. Felkod: 0x0. Server utökad felkod: 0x0, serverfelmeddelande: (null).
Adprep misslyckades med åtgärden på partitionen DC=ForestDnsZones,DC=Contoso,DC=com Hoppar över till nästa partition.
Adprep slutfördes med fel. Alla partitioner uppdateras inte.
Orsak
Det här problemet uppstår när Adprep /rodcprep kommandot försöker kontakta infrastrukturhanteraren för varje programpartition i skogen. Kommandot gör det för att ange de behörigheter som krävs för rodc-replikering (Skrivskyddad domänkontrollant). Kommandot Adprep /rodcprep misslyckas om något av följande villkor är sant:
- Partitionen eller partitionerna som refereras i felmeddelandet finns inte längre.
 - Infrastrukturhanteraren för den refererade partitionen eller partitionerna har degraderats eller är offline.
 
Åtgärd
Lös problemet om partitionen inte längre finns genom att rensa metadata för den överblivna partitionen med parametern "remove nc" i Dsmgmt-verktyget. Mer information finns på följande Microsoft-webbplats:
Om den angivna partitionen finns anger du en infrastrukturrollägare som är online för partitionen. Du kan göra det genom att manuellt ändra attributet fSMORoleOwner på objektet enligt beskrivningen i avsnittet "Mer information".
Mer information
Följande skriptexempel ändrar attributet fSMORoleOwner på infrastrukturobjektet för den angivna icke-domännamngivningskontexten (NDNC) till en aktiv eller kontaktbar server. NDNC i det här exemplet är DomainDnsZones,DC=contoso,DC=com NDNC-namngivningskontext . Skriptet använder följande kommando:
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
Om du vill fastställa infrastrukturhanteraren för en partition frågar du attributet fSMORoleOwner på infrastrukturobjektet under namnkontextroten i fråga. Fråga till exempel attributet fSMORoleOwner i CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com naming context root för att fastställa infrastrukturhanteraren för partitionen DC=DomainDnsZones,DC=contoso,DC=com . På samma sätt frågar du attributet fSMORoleOwner i CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com naming context root för att fastställa infrastrukturhanteraren för partitionen DC=ForestDnsZones,DC=contoso,DC=com .
Du kan använda verktyg som LDP-verktyget, Redigeringsverktyget för Active Directory Service Interfaces (ADSI) och verktyget ldifde för att utföra dessa frågor. Följande fråga använder till exempel Idifde-verktyget:
ldifde -f Infra_DomainDNSZones.ldf -d "CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com" -l fSMORoleOwner
Den här frågan returnerar infrastrukturhanterarens rollägare för DC=DomainDnsZones,DC=contoso,DC=com-partitionen till filen Infra_DomainDNSZones.ldf.
Kommentar
Du kan köra Adprep /rodcprep kommandot flera gånger utan att skada skogen. Åtgärder som slutfördes i tidigare körningar av kommandot rodcprep upprepas inte.
Om du försöker köra rodcprep kommandot i en isolerad miljö måste infrastrukturhanteraren för varje domän och för varje programkatalogpartition vara tillgänglig i miljön för att åtgärden ska lyckas.