如何針對 dcpromo 的複製階段中的「內部錯誤」訊息進行疑難排解

適用於: Windows Server, version 2004, all editionsWindows Server, version 1903, all editionsWindows Server 2019, all editions

家用使用者本文僅供技術支援代理商和 IT 專業人員使用。如果您正在尋找問題的相關協助,請詢問 Microsoft 社區

摘要


本文說明如何針對 Active Directory 安裝精靈(Dcpromo)中的複製階段所收到的「內部錯誤」訊息進行疑難排解。

其他相關資訊


在升級期間,目錄服務物件會以更新序列編號(USN)的順序(從低到高)來複製到架構、設定及網域。 如果複製的子物件的父容器不存在於本機目錄服務中,可能會發生內部錯誤。

這個問題可能會發生在下列其中一種情況:

  • 有一個作用中的物件,其父項已在過去刪除,而且父項已到期且已轉換為幻影。 因此,無法再複製子物件。 ReplPrepareDataToShip does'nt 中的父物件呼叫FillGuidAndSid成功,並報告錯誤("8352 = ERROR_DS_NOT_AN_OBJECT")。 此錯誤會導致子物件的輸出複製結束,而且您會收到「複製內部錯誤」訊息。 如果有具有幻影父級的活(或刪除)物件,Active Directory 會暫時接受即時物件,因為不符合順序的複製需求。 如果父項有子物件,則磁片清理程式(例如垃圾收集)不應該能夠將已刪除的物件轉換成幻影。 Windows 2000 Service Pack 2 (SP2)後的 Ntdsa 檔案可避免在目錄服務中發生這種情況。 不過,這個檔案不會在問題發生之後修正。
  • 當您使用 Windows Server 2003 或更新版本的 Ntdsutil 工具時,您可以使用 [權威性還原] 命令。 Ntdsutil 會增加 Active Directory 中指定的容器與子物件的 USN。 Ntdsutil.exe 的 Beta 版本可能無法正確地增加遺失和找到容器的 USN。 在在本機目錄服務中建立容器之前,如果複製了遺失和找到的容器的物件,則會報告下列事件:
    若要避免這種情況,遺失和找到的容器通常是已複製的第一個容器。

在正常或由管理員啟動的 Active Directory 複製期間,在現有的 Active Directory 網網域控制站上也可能會發生內部錯誤。

如何針對此錯誤訊息進行疑難排解

請依照下列步驟執行:

  1. 使用網路監視器、事件日誌或 Dcpromo 記錄來找出 Active Directory 複製期間使用的來源伺服器(使用 Active Directory 安裝精靈)。
  2. 如果您使用的是 Active Directory 安裝精靈,且有一個以上可能的複製夥伴存在,請使用 Active Directory 安裝精靈的答案檔案來尋找來源伺服器。 可能的來源網網域控制站在網域中包含新子域的網網域控制站,或是在複製的網網域控制站所在網域中的網網域控制站。 或者,如果某個特定的來源伺服器置疑,請停止可疑電腦上的 Net Logon 服務,然後從其他網網域控制站搜尋。
  3. 在源伺服器上,找出並按一下以下登錄子機碼: HKEY_LOCAL_MACHINE \System\currentcontrolset\services\ntds\diagnostics編輯下列值:
    • 9 內部處理:將診斷等級設定為1
    • 7 內部配置:將診斷等級設定為3
    • 5 個複製事件:將診斷等級設定為3
  4. 使用 [登錄編輯程式],將\NTDS金鑰從源伺服器匯出到要升級的電腦(例如,NTDS)。 將檔案複製到發生複製時遇到內部錯誤的電腦上。 如果正在執行 Active Directory 安裝精靈時,出現「內部錯誤」,請將 .reg 檔案複製到問題網網域控制站上的桌面,以便能輕鬆啟動檔案。 或者,按下 Windows 鍵 + R,然後從焦點在該檔案的分段瀏覽器視窗中拖曳 .reg 檔案。 選取[確定] ,將 .reg 檔案的內容新增到註冊表。
  5. 當要升級的電腦開始複製架構命名內容時,請執行該 .reg 檔案,以建立 \NTDS\Diagnostics 登錄機碼和設定。
  6. 檢查來源和目的地伺服器上的目錄服務事件記錄。 內部事件會在源伺服器上顯示為「事件 ID 1173」。 查看內部錯誤之前發生的 NTDS 複製事件,找出要複製之物件的全域通用識別(GUID)。 (您可能會有重新傳送相同物件的重試返回)。 記錄有問題之物件或容器的 GUID。
  7. 啟動 Ldp、啟動連線,然後依據源伺服器進行系結。 從 [流覽]功能表中,選取 [刪除]。 在 [辨別名稱路徑] 中,輸入<guid =guid #>,例如<GUID = b2d605a4-b9e6-4505-ba59-895e91a9a7b5>]。 將 [搜尋範圍] 設定為 [基本],然後刪除指定的 GUID。
  8. 使用 Ldp.exe,將TombstoneLifetime屬性的值設定為2(在移除邏輯刪除物件之前的天數)。 TombstoneLifetime位於下列辨識名稱路徑: Cn = 目錄服務,cn = Windows NT,cn = 服務,cn = Configuration,dc =根網域,dc = COM  

    確認TombstoneLifetime屬性存在,且其值為2。 如果該值小於2,則值無效,且伺服器會使用60天的預設值。 (您也可以使用 ADSIEDIT 來變更這個屬性)。 注意: 在您等待兩天之後,若要移除已邏輯刪除的物件,您可能需要等候額外的60分鐘,然後再重新開機網網域控制站,然後繼續垃圾收集進程。

  9. 在源網網域控制站上啟動垃圾收集。 找出並按一下下列登錄機碼: HKEY_LOCAL_MACHINE \system\currentcontrolset\services\ntds\diagnostics 鍵編輯下列值:
    • 6 垃圾收集:將診斷等級設為3
    • 9 內部處理:將診斷等級設為1
    若要強制進行垃圾收集,請重新開機網網域控制站。 垃圾收集應該在您重新開機網網域控制站後15分鐘執行。 診斷等級現在會在目錄服務事件記錄中記錄垃圾收集事件。
  10. 若要確認物件已遭刪除,請執行下列命令: repadmin/showmeta已刪除物件的 "<" GUID [> "如果您收到「沒有這個物件」訊息,該物件已經被成功刪除,您現在可以成功執行 Active Directory 安裝精靈。如果物件尚未完成垃圾收集程式,則應該有isDeleted屬性的中繼資料。與isDeleted屬性相關聯的時間戳記是刪除時間。確認刪除時間至少設定為兩天前,例如: repadmin/showmeta "<GUID = b2d605a4-b9e6-4505-ba59-895e91a9a7b>"
  11. 解決此問題後,請將診斷記錄層級重設為0 ,並將 tombstone 存留期設回先前的狀態,或移除完全值,以提示電腦使用預設值。 TombstoneLifetime設定在定義系統狀態與 Active Directory 備份的實用生命週期中非常重要。 當TombstoneLifetime設為2時,超過兩天的備份磁帶將無法使用。 任何已停機兩天以上的網網域控制站,都必須從備份中還原或重新安裝。

下列文字是來源和目的伺服器上的目錄服務事件記錄中報告的事件範例:

在已升級的電腦上,系統會在 Active Directory 安裝精靈記錄中報告下列文字。 在此範例 Dcpromo .log 檔案中,當您從 \\computer_source時,在 Active Directory 安裝精靈中,正在升級的電腦(即computer_promoted)遇到「內部錯誤」。 請注意,當正在複製三個命名內容中的其中一個時,就會發生錯誤8442(「複製系統遇到內部錯誤」)。 這個範例顯示錯誤發生在配置命名內容上: