Compartir a través de


Error al ejecutar el Adprep /rodcprep comando en Windows Server 2008: Adprep no pudo ponerse en contacto con una réplica para la partición DC=DomainDnsZones,DC=Contoso,DC=com

En este artículo se resuelve un problema que indica que el Adprep /rodcprep comando no se ha completado correctamente porque no se puede acceder al maestro de infraestructura para uno o varios NDNC de Active Directory.

Número de KB original: 949257

Síntomas

Al ejecutar el Adprep /rodcprep comando en Windows Server 2008, recibirá el siguiente mensaje de error:

Adprep no pudo ponerse en contacto con una réplica para la partición DC=DomainDnsZones,DC=Contoso,DC=com

Adprep produjo un error en la operación en la partición DC=DomainDnsZones,DC=Contoso,DC=com Omitiendo a la siguiente partición.

Adprep no pudo ponerse en contacto con una réplica para la partición DC=ForestDnsZones,DC=Contoso,DC=com

Adprep encontró un error LDAP. Código de error: 0x0. Código de error extendido del servidor: 0x0, mensaje de error del servidor: (null).

Adprep produjo un error en la operación en la partición DC=ForestDnsZones,DC=Contoso,DC=com Omitiendo a la siguiente partición.

Adprep se completó con errores. No todas las particiones se actualizan.

Causa

Este problema se produce cuando el comando intenta ponerse en contacto con el Adprep /rodcprep maestro de infraestructura para cada partición de aplicación del bosque. El comando lo hace para establecer los permisos necesarios para la replicación del controlador de dominio de solo lectura (RODC). Se produce un error en el Adprep /rodcprep comando si se cumple una de las condiciones siguientes:

  • La partición o las particiones a las que se hace referencia en el mensaje de error ya no existen.
  • El patrón de infraestructura de la partición o las particiones a las que se hace referencia se ha degradado de forma forzada o está sin conexión.

Solución

Para resolver este problema si la partición ya no existe, realice una limpieza de metadatos para la partición huérfana mediante el parámetro "remove nc" de la herramienta Dsmgmt. Para más información, visite el sitio web de Microsoft:

administración de particiones

Si existe la partición especificada, especifique un propietario de rol de infraestructura que esté en línea para la partición. Puede hacerlo modificando manualmente el atributo fSMORoleOwner en el objeto, como se describe en la sección "Más información".

Más información

El siguiente ejemplo de script modifica el atributo fSMORoleOwner en el objeto de infraestructura del contexto de nomenclatura no de dominio (NDNC) especificado en un servidor activo o contactable. El NDNC de este ejemplo es el contexto de nomenclatura de NDNC DomainDnsZones,DC=contoso,DC=com. El script usa el siguiente comando:

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

Para determinar el patrón de infraestructura de una partición, consulte el atributo fSMORoleOwner en el objeto de infraestructura en la raíz del contexto de nomenclatura en cuestión. Por ejemplo, consulte el atributo fSMORoleOwner en el CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com naming context root para determinar el patrón de infraestructura para la partición DC=DomainDnsZones,DC=contoso,DC=com. Del mismo modo, consulte el atributo fSMORoleOwner en el CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com naming context root para determinar el patrón de infraestructura para la partición DC=ForestDnsZones,DC=contoso,DC=com.

Puede usar herramientas como la herramienta LDP, la herramienta de edición de interfaces de servicio de Active Directory (ADSI) y la herramienta ldifde para realizar estas consultas. Por ejemplo, la consulta siguiente usa la herramienta Idifde:

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

Esta consulta devuelve el propietario del rol maestro de infraestructura para la partición DC=DomainDnsZones,DC=contoso,DC=com en el archivo Infra_DomainDNSZones.ldf.

Nota:

Puede ejecutar el Adprep /rodcprep comando varias veces sin dañar el bosque. Las operaciones que se completaron en ejecuciones anteriores del comando rodcprep no se repiten.

Si intenta ejecutar el rodcprep comando en un entorno aislado, el maestro de infraestructura para cada dominio y para cada partición de directorio de aplicación debe estar disponible en el entorno para que la operación se realice correctamente.