如何疑難排解在 Windows Server 2003,或在 Windows Server 2008 中 Adamsync OBJ_CLASS_VIOLATION 錯誤

文章翻譯 文章翻譯
文章編號: 923835 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,如何疑難排解 OBJ_CLASS_VIOLATION 錯誤,當您使用 「 Adamsync 工具,Windows Server 2003 中,或在 Windows Server 2008 中時發生。

由於的類別定義 Active Directory 目錄服務和 ADAM 執行個體之間的差異,就會發生這個錯誤。若要此問題的疑難排解,請依照下列各節將說明的步驟:
  • 決定屬性和物件類別的
  • 當屬性屬於 TOP 類別時解決這個問題的步驟
  • 步驟來解決問題,當屬性不屬於 TOP 類別
如果您不能解決問題,請連絡 Microsoft 支援服務。

徵狀

您嘗試使用 「 Active Directory 應用程式模式 (ADAM) 同步處理程式 (Adamsync.exe) 」 工具來同步處理 Active Directory 物件到 Windows Server 2008 以 Windows Server 2003 為主或電腦上的 ADAM 執行個體。不過,Adamsync 記錄檔會記錄類似下列的錯誤訊息:
處理來源項目 <guid=f9023a23e3a06d408f07a0d51c301f38> 處理範圍中的項目 f9023a23e3a06d408f07a0d51c301f38 處理項目: 頁面 X 框架 X 項目 X Count X USN X。 新增目標物件 CN =TestGroup、 OU = Accounts,dc = domain,dc = com。 加入屬性: sourceobjectguid,objectClass,instanceType,顯示名稱,資訊 adminDescription、 displayNamePrintable、 userAccountControl、 字碼頁、 countryCode、 logonHours、 primaryGroupID、 註解、 accountExpires、 sAMAccountName、 desktopProfile、 legacyExchangeDN、 userPrincipalName

發生 Ldap 錯誤。ldap_add_sW: 物件類別違規。 延伸資訊: 0000207D: UpdErr: DSID-0315119D,問題 6002 (OBJ_CLASS_VIOLATION) 資料-2054643804

發生的原因

因為在類別定義之間的差異 Active Directory 及 ADAM,就會發生這個問題。 當您嘗試修改要包括的屬性,對它的類別無效的物件時,便會出現這項差異。比方說屬性已不定義 ADAM 結構描述中在所有或屬性定義但屬性不存在於強制或選用屬性清單的特定類別。通常,第二種情況是這個問題的最常見的原因。

是要進行同步處理的物件類別定義包含在 ADAM 無法使用的一或多個屬性在 Active Directory 中。 < 徵狀 > 一節所述的錯誤訊息的 < 加入屬性] 區段會顯示您嘗試新增的屬性。這些屬性是選擇性的參數或正在同步處理的物件類別強制屬性的清單中所定義。

比方說在 < 徵狀 > 一節所述之錯誤訊息,該參考物件可說是 CN = TestGroup。當您檢視 CN=TestGroup 物件在 Active Directory 及您檢查這個類別的屬性清單及所有父類別,您看到此清單中的一或多個屬性不是強制或選擇性的參數已啟用在 ADAM 中,這個類別的屬性清單中。

附註這包括從所有的父類別的屬性清單。

解決方案

如果要解決這個問題,請依照下列步驟執行。

決定屬性和物件類別的

  1. 請確認正在加入至失敗的物件的屬性清單。您可以判斷物件無法透過檢視同步處理記錄檔中的錯誤訊息的。失敗的物件永遠是最後一個會指出錯誤訊息之前完全同步記錄檔結尾處的物件。比方說,CN=TestGroup 物件已經在 < 徵狀 > 一節所述的錯誤訊息中失敗。
  2. 判斷 DisplayNamePrintable標幟ExtensionName 屬性是否包含在錯誤訊息。如果這些屬性的其中之一包含在錯誤訊息中,請參閱 < 解決問題,當屬性屬於 TOP 類別時的步驟 > 一節。如果沒有屬性包含在錯誤訊息中,請參閱 < 解決問題,當 TOP 類別不屬於屬性的步驟 > 一節。

當屬性屬於 TOP 類別時解決這個問題的步驟

您會發現 TOP 的類別,Active Directory 結構描述中包含 DisplayNamePrintable標幟ExtensionName 屬性。不過,在 ADAM TOP 類別中不包含這些屬性。但是,您無法變更中 ADAM TOP 的類別。因此,使用下列方法之一來解決這個問題:
  • 藉由在 XML 組態檔中使用 <exclude>區段排除這些屬性。
  • 利用 MMC 結構描述中相關的類別,ADAM 結構描述中的選擇性屬性的清單以手動方式新增這些屬性。比方說錯誤訊息本文 < 徵狀 > 一節所述中, 失敗物件是群組類別。因此,您必須在 ADAM 中的 [群組] 類別為 [選擇性的屬性清單中加入這些屬性。

步驟來解決問題,當屬性不屬於 TOP 類別

  1. 在 [工具] 下的 ADSchemaAnalyzer \ 選項] 功能表按一下 [LDIF 產生] 索引標籤上的 [新的和呈現項目的參考的更新
  2. 若要載入目標結構描述和為基底的結構描述的 ADAM Active Directory 使用 檔案] 功能表。等候工具,以完成比較結構描述。
  3. 在 [結構描述] 功能表上按一下 [標記的所有項目,如包含]。
  4. 按一下 [檔案] 功能表 建立 LDIF 檔案,以建立一個 LDF 檔案,其中含有所做的變更。

    附註如果您直接在 ADAM 匯入這個 LDF] 檔案,必要的屬性將可能不會新增或修改正確。此外,就會不顯示任何錯誤訊息。請參閱 「 為什麼您不能匯入 [LDF 檔案直接將 ADAM 」 一節的解釋為什麼這會發生。在這種情況下請跳至步驟 5 而不匯入 LDF 檔案。
  5. 檢查您在步驟 4 中建立的 LDF 檔案。特別,檢視造成問題的類別。比方說檢視群組類別。這個類別的區段會包含在 Active Directory 中,這個類別出現在強制或選用屬性清單中但,是 ADAM 中遺漏的屬性清單。
  6. 在 LDF 檔案中找到問題屬性。若要執行此動作檢查 LDF 檔案中的 [#attributes"] 區段。不會匯入的屬性仍會保留在此區段中。通常,問題屬性是唯一您 #attributes > 一節中找到的屬性。如果您找到問題屬性,請到步驟 8。如果沒有找到問題屬性前往步驟 7。
  7. 如果問題屬性不是從 #attributes 」 區段 LDF 檔案中明顯,請依照下列步驟找出問題屬性:
    1. 目前類別的所有修改都都 LDF 檔案中的下一個區段。這是 「 #Updating 現的項目 」 一節。此區段下找出有問題的類別會更新區段]。例如如果群組類別是問題,您會發現類似下列的區段:
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: adminCount
      mayContain: 1.2.840.113556.1.4.150
      # mayContain: controlAccessRights
      mayContain: 1.2.840.113556.1.4.200
      # mayContain: groupAttributes
      mayContain: 1.2.840.113556.1.4.152
      # mayContain: groupMembershipSAM
      mayContain: 1.2.840.113556.1.4.166
      -
      
      NoteSome more entries that may be located here have been excluded from this example.
      
      dn: 
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1
      
    2. 變更步驟 4a 位於藉由分割項目變成每項操作的單一屬性的項目。使用如下所示的項目,例如變更中步驟 7a 中範例項目:
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: adminCount
      mayContain: 1.2.840.113556.1.4.150
      -
      
      # Update element: group
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: controlAccessRights
      mayContain: 1.2.840.113556.1.4.200
      -
      
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: groupAttributes
      mayContain: 1.2.840.113556.1.4.152
      -
      
      dn: cn=Group,cn=Schema,cn=Configuration,dc=X
      changetype: modify
      add: mayContain
      # mayContain: groupMembershipSAM
      mayContain: 1.2.840.113556.1.4.166
      -
      
      Note Some more entries that may be located here have been excluded from this example.
      
      
      dn: 
      changetype: modify
      add: schemaUpdateNow
      schemaUpdateNow: 1
      
  8. 儲存 LDF 檔案。
  9. 匯入 ADAM 結構描述的 LDF 檔案,使用所提供的 LDF 檔案開頭] 指令。
  10. 檢視報表顯示 Ldifde 公用程式。Ldifde 現在將會報告具有未匯入的屬性發生的錯誤。錯誤資訊會類似下列的範例資訊:
    C:\WINDOWS\ADAM>ldifde -i -u -f c:\data\problem\KBtest_modified.ldf -s localhost:50010 -j . -c "cn=Configuration,dc=X" #configurationNamingContext
    Connecting to "localhost:50010"
    Logging in as current user using SSPI
    Importing directory from file "c:\data\problem\KBtest_modified.ldf"
    Loading entries.
    Add error on line 15: Already Exists
    The server side error is: 0x2071 An attempt was made to add an object to the
    ectory with a name that is already in use.
    The extended server error is:
    00002071: UpdErr: DSID-0305030D, problem 6005 (ENTRY_EXISTS), data 0
    

    附註檢視錯誤報告中的指示行號,找出問題屬性中 LDF 檔案。
  11. 使用此錯誤資訊來找出問題屬性並解決問題。請依照下列步驟執行來嘗試解決問題:
    1. 檢視錯誤報告中的指示行號,找出問題屬性中 LDF 檔案。失敗的屬性可能有 [DisplayName"DUP-"前置詞。
    2. 注意屬性的物件識別元 (OID),並尋找 ADAM 在這個物件識別項。
    3. 尋找具有相同的物件識別項的 ADAM 中的 [屬性]。
    4. 比較屬性在 ADAM 和來尋找任何差異的 LDF 檔案中。例如,屬性可能會有不同的 DisplayName 但相同的物件識別項。
    5. 決定要保留,哪一個屬性,然後更正另一個。比方說移除的 LDF 檔案的項目,或您可以更正 ADAM 屬性項目。或者您可以從同步處理排除問題屬性,利用 <exclude>區段 XML 組態檔中。
  12. Active Directory 中或 ADAM 結構描述中或從 LDF 檔案移除屬性之後,修正後問題屬性之後匯入已修改的 LDF 檔案。現在匯入操作應該會成功。如果問題未解決,可能會造成問題的另一個屬性。重複步驟 10 到 12,直到所有屬性,將會匯都入。

診斷記錄

當您找到問題屬性時,它可能不明顯什麼是錯誤與它。比方說您不可能會發現重複的物件識別項或不同的 DisplayName 項目。當問題屬性就不會匯入時,您可以藉由開啟 LDAP 介面的偵錯記錄取得失敗的相關資訊。要這麼做,請您執行下列步驟:
  1. 若要取得 Ldifde 失敗的詳細資訊,開啟 LDAP 登入 ADAM。要執行這個步驟將 [
    Category 16 LDAP Interface events
    登錄項目值] 變更為 [5]。此登錄項目位於下列登錄子機碼之下:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ADAM_instanceName\Diagnostics
  2. 再次匯入 LDF 檔案。
  3. 查看事件日誌中有錯誤。
  4. 在您完成疑難排解之後,重設
    Category 16 LDAP Interface events
    登錄項目的值為 0。否則,事件記錄檔將會淹沒。

請連絡 Microsoft 支援部門

如果您完成本文中的步驟之後,問題仍未解決,與 Microsoft 支援部門連絡。按一下下列的連結,以存取 Microsoft 支援:
http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

狀況說明

這種行為是經過設計規劃的。

其他相關資訊

如果要使用 Adamsync 工具同步處理從 Active Directory 資料到 ADAM,請依照下列步驟執行:
  1. 按一下 [開始],指向 [所有程式]、 都指向 ADAM,然後再按一下 [ADAM 工具命令提示字元]。
  2. 在命令提示字元中,請輸入下列指令,並按下 ENTER:
    adamsync /fs Server_Nameport_number configurationName /log log_file_name.log
如需有關如何使用 Adamsync 工具,請造訪下列 Microsoft 網站的詳細資訊:
http://technet2.microsoft.com/windowsserver2008/en/library/ca49911b-d004-4497-b369-6506495fb30f1033.mspx?mfr=true

http://technet2.microsoft.com/windowsserver/en/library/809c8d09-cc99-4e7e-a80d-e77c5aefb3211033.mspx?mfr=true

為何您不能匯入 LDF 檔案直接將 ADAM

如果您匯入您在步驟 1 」 屬性不屬於 TOP 類別時解決這個問題的步驟 > 區段下方到 ADAM 建立 [LDF 檔案,這些屬性會仍然不加入至 [屬性] 清單中 ADAM。您可以使用 MMC 或 ADSIEDIT ADAM 結構描述來檢查結構描述來確認這種行為。[Ldifde 無訊息地匯入作業失敗,就會發生這個問題。目前,Ldifde 不會報告錯誤。它以無訊息模式失敗是由於 ADSchemaAnalyzer 建構 LDF 檔案的方式。ADSchemaAnalyzer 使用 ntdsschemaaddntdsSchemamodify 指令。這些命令開啟寬鬆的 LDAP 控制項。這表示任何失敗是無訊息。

此外,每一個類別新增到選擇性的屬性清單的所有屬性都加入一個新增/修改作業中。因此,如果問題之屬性的其中之一新增整個作業會失敗,且在清單中的沒有屬性會加入。因此,必須採取額外的步驟來找出問題屬性。

通常,失敗的可能的原因是重複的物件識別項的屬性或屬性定義在 Active Directory 及 ADAM 的其他差異。在 Windows Server 2003 ADSchemaAnalyzer 會使用屬性和類別的 LdapDisplayName,來比較 Active Directory 及 ADAM。這表示重複的 OID 可能遺漏,並屬性可能會出現為新的屬性,如果 [LDapDisplayName 不存在的 ADAM。在 Windows Server 2008 (Active Directory/LDS),ADSchemaAnalyzer 會使用物件識別項,然後將會報告衝突,如果找到。

屬性

文章編號: 923835 - 上次校閱: 2008年7月16日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
關鍵字:?
kbmt kbprb kbtshoot KB923835 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:923835
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com