Windows Server 2008에서 명령을 실행할 Adprep /rodcprep 때 오류 발생: Adprep에서 DC=DomainDnsZones,DC=Contoso,DC=com 파티션에 대한 복제본(replica) 연결할 수 없습니다.

이 문서에서는 하나 이상의 Active Directory NDNC에 대한 인프라 master 연결할 수 없기 때문에 명령이 성공적으로 완료되지 않은 문제를 Adprep /rodcprep 해결합니다.

적용 대상: Windows Server 2012 R2
원래 KB 번호: 949257

증상

Windows Server 2008에서 명령을 실행 Adprep /rodcprep 하면 다음 오류 메시지가 표시됩니다.

Adprep에서 DC=DomainDnsZones,DC=Contoso,DC=com 파티션에 대한 복제본(replica) 연결할 수 없습니다.

Adprep에서 DC=DomainDnsZones, DC=Contoso, DC=com 파티션에 대한 작업을 다음 파티션으로 건너뛰는 데 실패했습니다.

Adprep에서 파티션 DC=ForestDnsZones,DC=Contoso,DC=com에 대한 복제본(replica) 연결할 수 없습니다.

Adprep에 LDAP 오류가 발생했습니다. 오류 코드: 0x0. 서버 확장 오류 코드: 0x0, 서버 오류 메시지: (null).

Adprep에서 파티션 DC=ForestDnsZones, DC=Contoso, DC=com 다음 파티션으로 건너뛰기 작업에 실패했습니다.

Adprep이 오류와 함께 완료되었습니다. 모든 파티션이 업데이트되는 것은 아닙니다.

원인

이 문제는 명령이 포리스트의 Adprep /rodcprep 각 애플리케이션 파티션에 대한 인프라 master 연결하려고 할 때 발생합니다. 명령은 RODC(도메인 컨트롤러) 복제에 필요한 권한을 Read-Only 합니다. Adprep /rodcprep 다음 조건 중 하나가 true이면 명령이 실패합니다.

  • 오류 메시지에서 참조되는 파티션 또는 파티션이 더 이상 존재하지 않습니다.
  • 참조된 파티션 또는 파티션에 대한 인프라 master 강제로 강등되었거나 오프라인 상태입니다.

해결 방법

파티션이 더 이상 존재하지 않는 경우 이 문제를 resolve Dsmgmt 도구의 "nc 제거" 매개 변수를 사용하여 분리된 파티션에 대한 메타데이터 정리를 수행합니다. 자세한 내용을 확인하려면 다음 Microsoft 웹 사이트()를 방문하십시오.

파티션 관리

지정된 파티션이 있는 경우 파티션에 대해 온라인 상태인 인프라 역할 소유자를 지정합니다. "추가 정보" 섹션에 설명된 대로 개체의 fSMORoleOwner 특성을 수동으로 수정하여 수행할 수 있습니다.

추가 정보

다음 스크립트 샘플에서는 지정된 NDNC(Non-Domain Naming Context)의 인프라 개체에 대한 fSMORoleOwner 특성을 활성 또는 연락처 가능 서버로 수정합니다. 이 샘플의 NDNC는 DomainDnsZones,DC=contoso,DC=com NDNC 명명 컨텍스트입니다. 스크립트는 다음 명령을 사용합니다.

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

파티션에 대한 인프라 master 확인하려면 해당 명명 컨텍스트 루트 아래의 인프라 개체에서 fSMORoleOwner 특성을 쿼리합니다. 예를 들어 CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com 명명 컨텍스트 루트에서 fSMORoleOwner 특성을 쿼리하여 DC=DomainDnsZones,DC=contoso,DC=com 파티션에 대한 인프라 master 확인합니다. 마찬가지로 CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com 명명 컨텍스트 루트에서 fSMORoleOwner 특성을 쿼리하여 DC=ForestDnsZones,DC=contoso,DC=com 파티션에 대한 인프라 master 확인합니다.

LDP 도구, ADSI(Active Directory 서비스 인터페이스) 편집 도구 및 ldifde 도구와 같은 도구를 사용하여 이러한 쿼리를 수행할 수 있습니다. 예를 들어 다음 쿼리는 Idifde 도구를 사용합니다.

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

이 쿼리는 DC=DomainDnsZones,DC=contoso,DC=com 파티션에 대한 인프라 master 역할 소유자를 Infra_DomainDNSZones.ldf 파일에 반환합니다.

참고

포리스트에 Adprep /rodcprep 해를 끼치지 않고 명령을 여러 번 실행할 수 있습니다. rodcprep 명령의 이전 실행에서 완료된 작업은 반복되지 않습니다.

격리된 환경에서 명령을 실행 rodcprep 하려는 경우 작업이 성공하려면 각 도메인 및 각 애플리케이션 디렉터리 파티션에 대한 인프라 master 환경 내에서 사용할 수 있어야 합니다.