Windows Server 2008'de komutu çalıştırdığınızda Adprep /rodcprep hata: Adprep, DC=DomainDnsZones,DC=Contoso,DC=com bölümü için bir çoğaltmayla iletişim kuramadı

Bu makalede, bir veya daha fazla Active Directory NDNC'sinin Adprep /rodcprep altyapı yöneticisine erişilemediğinden komutun başarıyla tamamlanamadığı bir sorun çözülmektedir.

Şunlar için geçerlidir: Windows Server 2012 R2
Özgün KB numarası: 949257

Belirtiler

Windows Server 2008'de komutunu çalıştırdığınızda Adprep /rodcprep aşağıdaki hata iletisini alırsınız:

Adprep, DC=DomainDnsZones,DC=Contoso,DC=com bölümü için çoğaltmayla iletişim kuramadı

Adprep, DC=DomainDnsZones,DC=Contoso,DC=com bölümü sonraki bölüme atlanırken işlemi başarısız oldu.

Adprep, DC=ForestDnsZones,DC=Contoso,DC=com bölümü için bir çoğaltmayla iletişim kuramadı

Adprep bir LDAP hatasıyla karşılaştı. Hata kodu: 0x0. Sunucu genişletilmiş hata kodu: 0x0, Sunucu hata iletisi: (null).

Adprep, DC=ForestDnsZones,DC=Contoso,DC=com bölümü sonraki bölüme atlanıyor bölümünde işlemi başarısız oldu.

Adprep hatalarla tamamlandı. Tüm bölümler güncelleştirilmez.

Neden

Bu sorun, komut ormandaki Adprep /rodcprep her uygulama bölümü için altyapı yöneticisine başvurmaya çalıştığında oluşur. komutu, Read-Only Etki Alanı Denetleyicisi (RODC) çoğaltması için gereken izinleri ayarlamak için bunu yapar. Adprep /rodcprep Aşağıdaki koşullardan biri doğruysa komut başarısız olur:

  • Hata iletisinde başvuruda bulunılan bölüm veya bölümler artık yok.
  • Başvuruda bulunılan bölüm veya bölümler için altyapı yöneticisi zorla indirgenmiş veya çevrimdışı.

Çözüm

Bölüm artık yoksa bu sorunu çözmek için, Dsmgmt aracının "remove nc" parametresini kullanarak yalnız bırakılmış bölüm için bir meta veri temizleme işlemi yapın. Daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

bölüm yönetimi

Belirtilen bölüm varsa, bölüm için çevrimiçi olan bir altyapı rolü sahibi belirtin. Bunu, "Daha fazla bilgi" bölümünde açıklandığı gibi nesnedeki fSMORoleOwner özniteliğini el ile değiştirerek yapabilirsiniz.

Daha fazla bilgi

Aşağıdaki betik örneği, belirtilen Etki Alanı Dışı Adlandırma Bağlamı'nın (NDNC) altyapı nesnesinde fSMORoleOwner özniteliğini etkin veya bağlantı kurulabilir bir sunucu olarak değiştirir. Bu örnekteki NDNC , DomainDnsZones,DC=contoso,DC=com NDNC adlandırma bağlamıdır. Betik aşağıdaki komutu kullanır:

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

Bir bölümün altyapı yöneticisini belirlemek için, söz konusu adlandırma bağlamı kökü altındaki altyapı nesnesindeki fSMORoleOwner özniteliğini sorgulayın. Örneğin, CN=Infrastructure,DC=DomainDnsZones,DC=contoso,DC=com adlandırma bağlamı kökünde fSMORoleOwner özniteliğini sorgulayın ve DC=DomainDnsZones,DC=contoso,DC=com bölümünün altyapı yöneticisini belirleyin. Benzer şekilde, D C=ForestDnsZones,DC=contoso,DC=com bölümünün altyapı yöneticisini belirlemek için CN=Infrastructure,DC=ForestDnsZones,DC=contoso,DC=com adlandırma bağlamı kökünde fSMORoleOwnerözniteliğini sorgulayın.

Bu sorguları yapmak için LDP aracı, Active Directory Hizmet Arabirimleri (ADSI) Düzenleme aracı ve ldifde aracı gibi araçları kullanabilirsiniz. Örneğin, aşağıdaki sorgu Idifde aracını kullanır:

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

Bu sorgu , Infra_DomainDNSZones.ldf dosyasına DC=DomainDnsZones,DC=contoso,DC=com bölümü için altyapı yöneticisi rolü sahibini döndürür.

Not

Ormana Adprep /rodcprep zarar vermeden komutu birden çok kez çalıştırabilirsiniz. Rodcprep komutunun önceki yürütmelerinde tamamlanan işlemler yinelenmez.

Komutunu yalıtılmış bir ortamda çalıştırmaya rodcprep çalışırsanız, işlemin başarılı olması için her etki alanı ve her uygulama dizini bölümü için altyapı yöneticisinin ortamda kullanılabilir olması gerekir.