Mensaje de error al ejecutar el comando "Adprep /rodcprep" en Windows Server 2008: "Adprep no pudo contactar con una réplica de la partición DC = DomainDnsZones, DC = Contoso, DC = com"

Síntomas

Al ejecutar el comando Adprep /rodcprep en Windows Server 2008, recibirá el siguiente mensaje de error:
Adprep no pudo contactar con una réplica de la partición DC = DomainDnsZones, DC = Contoso, DC = com

Adprep no pudo realizar la operación en la partición DC = DomainDnsZones, DC = Contoso, DC = com omitiendo la siguiente partición.



Adprep no pudo contactar con una réplica de la partición DC = ForestDnsZones, DC = Contoso, DC = com

Adprep detectó un error LDAP. Código de error: 0 x 0. Código de error extendido de servidor: 0 x 0, mensaje de error de servidor: (null).



Adprep no pudo realizar la operación en la partición DC = ForestDnsZones, DC = Contoso, DC = com omitiendo la siguiente partición.

Adprep finalizada con errores. No todas las particiones se actualizan.

Causa

Este problema se produce cuando el comando Adprep /rodcprep intenta ponerse en contacto con el maestro de infraestructuras para cada partición de aplicación en el bosque. El comando hace esto para establecer los permisos que se requieren para la replicación del controlador de dominio de sólo lectura (RODC). El comando Adprep /rodcprep se produce un error si se cumple alguna de las condiciones siguientes:
  • La partición o las particiones que se hace referencia en el mensaje de error ya no existen.
  • El maestro de infraestructura para la referencia de partición o particiones ha sido degradado forzosamente o está sin conexión.

Solución

Para resolver este problema si la partición ya no existe, realizar una limpieza de metadatos de la partición huérfana con el parámetro "quitar CN" de la herramienta Dsmgmt. Para obtener más información, visite el siguiente sitio Web de Microsoft:

Si la partición especificada no existe, especifique un propietario de la función 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

En el siguiente ejemplo de secuencia de comandos modifica el atributo fSMORoleOwner en el objeto de la especificada no dominio nomenclatura contexto (NDS NDNC) a un servidor activo o puede contactar, de infraestructura. El NDS NDNC en este ejemplo es el DomainDnsZones, DC = contoso, DC = com NDS NDNC contexto de nomenclatura. La secuencia de comandos utiliza 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 al maestro de infraestructura para una partición, consultar el atributo fSMORoleOwner en el objeto de infraestructura bajo la nomenclatura raíz de contexto en cuestión. Por ejemplo, consultar el atributo fSMORoleOwner en el CN = infraestructura, DC = DomainDnsZones, DC = contoso, DC = com nomenclatura raíz de contexto para determinar el maestro de infraestructura para el DC = DomainDnsZones, DC = contoso, DC = com partición. Del mismo modo, consultar el atributo fSMORoleOwner en el CN = infraestructura, DC = ForestDnsZones, DC = contoso, DC = com nomenclatura raíz de contexto para determinar el maestro de infraestructura para el DC = ForestDnsZones, DC = contoso, DC = com partición.



Puede utilizar herramientas como la herramienta LDP, la herramienta de edición de Active Directory Service Interfaces (ADSI) y la herramienta ldifde para realizar estas consultas. Por ejemplo, la siguiente consulta utiliza la herramienta de Idifde:
ldifde -f Infra_DomainDNSZones.ldf -d "CN = infraestructura, DC = DomainDnsZones, DC = contoso, DC = com" -l fSMORoleOwner
Esta consulta devuelve el propietario de la función de maestro de infraestructura para el DC = DomainDnsZones, DC = contoso, DC = com partición en el archivo Infra_DomainDNSZones.ldf.


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

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

Id. de artículo: 949257 - Última revisión: 14 ene. 2017 - Revisión: 1

Comentarios