Errore durante l'esecuzione del Adprep /rodcprep comando in Windows Server 2008: Adprep non è riuscito a contattare una replica per la partizione DC=DomainDnsZones,DC=Contoso,DC=com

Questo articolo risolve un problema per cui il Adprep /rodcprep comando non è stato completato correttamente perché il master dell'infrastruttura per uno o più NDNC di Active Directory non è raggiungibile.

Si applica a: Windows Server 2012 R2
Numero KB originale: 949257

Sintomi

Quando si esegue il Adprep /rodcprep comando in Windows Server 2008, viene visualizzato il messaggio di errore seguente:

Adprep non è riuscito a contattare una replica per la partizione DC=DomainDnsZones,DC=Contoso,DC=com

Adprep non è riuscito a eseguire l'operazione sulla partizione DC=DomainDnsZones,DC=Contoso,DC=com Ignorando la partizione successiva.

Adprep non è riuscito a contattare una replica per la partizione DC=ForestDnsZones,DC=Contoso,DC=com

Adprep ha rilevato un errore LDAP. Codice di errore: 0x0. Codice di errore esteso del server: 0x0, messaggio di errore del server: (null).

Adprep non è riuscito a eseguire l'operazione sulla partizione DC=ForestDnsZones,DC=Contoso,DC=com Ignorando la partizione successiva.

Adprep completato con errori. Non tutte le partizioni vengono aggiornate.

Causa

Questo problema si verifica quando il Adprep /rodcprep comando tenta di contattare il master dell'infrastruttura per ogni partizione dell'applicazione nella foresta. Il comando consente di impostare le autorizzazioni necessarie per la replica del controller di dominio di Read-Only. Il Adprep /rodcprep comando ha esito negativo se si verifica una delle condizioni seguenti:

  • La partizione o le partizioni a cui si fa riferimento nel messaggio di errore non esistono più.
  • Il master dell'infrastruttura per la partizione o le partizioni a cui si fa riferimento è stato abbassato in modo forzato o è offline.

Risoluzione

Per risolvere questo problema se la partizione non esiste più, eseguire una pulizia dei metadati per la partizione orfana usando il parametro "remove nc" dello strumento Dsmgmt. Per maggiori informazioni, visitare il seguente sito Web Microsoft:

gestione delle partizioni

Se la partizione specificata esiste, specificare un proprietario del ruolo dell'infrastruttura online per la partizione. È possibile eseguire questa operazione modificando manualmente l'attributo fSMORoleOwner nell'oggetto , come descritto nella sezione "Altre informazioni".

Ulteriori informazioni

L'esempio di script seguente modifica l'attributo fSMORoleOwner nell'oggetto infrastruttura del contesto di denominazione non di dominio (NDNC) specificato in un server attivo o contattabile. Il NDNC in questo esempio è il contesto di denominazione DomainDnsZones,DC=contoso,DC=com NDNC . Lo script usa il comando seguente:

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

Per determinare il master dell'infrastruttura per una partizione, eseguire una query sull'attributo fSMORoleOwner sull'oggetto infrastruttura nella radice del contesto di denominazione in questione. Ad esempio, eseguire una query sull'attributo fSMORoleOwner nella radice del contesto di denominazione CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com per determinare il master dell'infrastruttura per la partizione DC=DomainDnsZones,DC=contoso,DC=com . Analogamente, eseguire una query sull'attributo fSMORoleOwner nella radice del contesto di denominazione CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com per determinare il master dell'infrastruttura per la partizione DC=ForestDnsZones,DC=contoso,DC=com .

Per eseguire queste query, è possibile usare strumenti come lo strumento LDP, lo strumento di modifica ADSI (Active Directory Service Interfaces) e lo strumento ldifde. Ad esempio, la query seguente usa lo strumento Idifde:

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

Questa query restituisce il proprietario del ruolo master dell'infrastruttura per la partizione DC=DomainDnsZones,DC=contoso,DC=com nel file Infra_DomainDNSZones.ldf.

Nota

È possibile eseguire il Adprep /rodcprep comando più volte senza danneggiare la foresta. Le operazioni completate nelle esecuzioni precedenti del comando rodcprep non vengono ripetute.

Se si tenta di eseguire il rodcprep comando in un ambiente isolato, il master dell'infrastruttura per ogni dominio e per ogni partizione di directory dell'applicazione deve essere disponibile all'interno dell'ambiente affinché l'operazione abbia esito positivo.