Active Directory レプリケーション イベント ID 2042: このマシンがレプリケートされてから長すぎます

この記事は、Active Directory レプリケーション イベント ID 2042 のトラブルシューティングに役立ちます。

適用対象: Windows Server 2012 R2
元の KB 番号: 4469622

現象

ドメイン コントローラーが、廃棄ストーンの有効期間を超えてパートナーとレプリケートされていない場合は、一方または両方のドメイン コントローラーに残留オブジェクトの問題が存在する可能性があります。 Active Directory フォレストの廃棄石の有効期間は、削除されたオブジェクト ("tombstone" と呼ばれます) がActive Directory Domain Services (AD DS) に保持される期間を決定します。 廃棄ストーンの有効期間は、構成ディレクトリ パーティション内の Directory Service オブジェクトの tombstoneLifetime 属性の値によって決まります。

イベント ID 2042 をログに記録する条件が発生すると、移行先ドメイン コントローラーでソース パートナーとの受信レプリケーションが停止し、イベント ID 2042 が Directory Service イベント ログに記録されます。 イベントは、ソース ドメイン コントローラーと、古いドメイン コントローラーを削除するか、残留オブジェクトを削除してソース ドメイン コントローラーからレプリケーションを復元するために実行する適切な手順を識別します。

イベント テキストの例を次に示します。

ログ名: ディレクトリ サービス
ソース: Microsoft-Windows-ActiveDirectory_DomainService
日付: <時刻>
イベント ID: 2042
タスク カテゴリ: レプリケーション
レベル: エラー
キーワード: クラシック
ユーザー: 匿名ログオン
コンピューター: <ドメイン コントローラーのホスト名>
説明:
このマシンが最後に名前付きソース マシンでレプリケートされてから長すぎます。 このソースを使用したレプリケーション間の時間が、廃棄ストーンの有効期間を超えました。 このソースでレプリケーションが停止しました。
レプリケーションを続行できない理由は、削除されたオブジェクトに対する 2 台のマシンのビューが異なる可能性があるためです。 ソース マシンには、このマシン上で削除 (およびガベージ コレクション) されたオブジェクトのコピーが残っている可能性があります。 レプリケートが許可されている場合、ソース マシンは既に削除されているオブジェクトを返す可能性があります。
最後に成功したレプリケーションの時刻:
<日付><時刻>
ソースの呼び出し ID:
<呼び出し ID>
ソースの名前:
<GUID>._msdcs。<ドメイン>
廃棄の有効期間 (日数): <日単位の TSL 番号>

レプリケーション操作が失敗しました。

ユーザー アクション:

フォレストから切断され、現在は古くなっている 2 台のマシンのうちどれを確認します。 次の 3 つのオプションがあります。

  1. 切断されたマシンを降格または再インストールします。
  2. "repadmin /removelingeringobjects" ツールを使用して、一貫性のない削除されたオブジェクトを削除し、レプリケーションを再開します。
  3. レプリケーションを再開します。 一貫性のない削除されたオブジェクトが導入される可能性があります。

レプリケーションを続行するには、次のレジストリ キーを使用します。
システムが 1 回レプリケートされたら、保護を再開するためにキーを削除することをお勧めします。
レジストリ キー:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Allow Replication With Divergent and Corrupt Partner

コマンドは、次の repadmin /showrepl 例に示すように、エラー 8416 も報告します。

ソース: Default-First-Site-Name\DC1
<日付><時刻以降<の連続するエラー数>>
最後のエラー: 8614 (0x21a6):
このサーバーでの最後のレプリケーション以降の時間が廃棄ストーンの有効期間を超えたため、Active Directory Domain Servicesはこのサーバーでレプリケートできません。

原因

イベント ID 2042 のログ記録には、次のようないくつかの原因が考えられます。

  • Windows Server 2003 Pre-Service Pack 1 (SP1) ドメイン コントローラーに、レプリケーション エラーの原因となるソフトウェアの問題があります。
  • 構成された廃棄石の有効期間の値より長く存在していたレプリケーション エラー。
  • 一部のドメイン コントローラーではなく、一部のドメイン コントローラーでオブジェクトを削除するシステム時間の進みまたはロールバック。

解決方法

この問題の解決は、問題の実際の原因または原因によって異なります。 この問題を解決するには、次の各条件についてチェックします。

  1. 少なくとも SP1 が適用されていない Windows Server 2003 ドメイン コントローラーがあるかどうかを確認します。 このようなドメイン コントローラーが見つかる場合は、少なくとも SP1 に更新してこの問題を解決してください。

  2. フォレストの墓石の有効期間を超えるレプリケーション エラーがあるかどうかを判断します。 通常、フォレストの墓石の有効期間は既定で 60 日から 180 日です。 イベント メッセージは、現在構成されているフォレストの廃棄石の有効期間を示します。

    コマンドを実行して、レプリケーションの問題が存在するかどうかを判断します repadmin /showrepl 。 レプリケーションの問題が発生している可能性がある場合は、問題を解決する方法の詳細については、「 Repadmin を使用した Active Directory レプリケーションの監視とトラブルシューティング 」を参照してください。

  3. 残留オブジェクトがあるかどうかを判断します。 これを行うには、次の手順で説明するように、アドバイザリ モードでコマンド repadmin /removelingeringobjects を実行します。

最初に、権限のあるドメイン コントローラーを識別する必要があります。 特定のドメイン コントローラーに最新の変更があることがわかっている場合は、そのドメイン コントローラーを権限のあるドメイン コントローラーとして使用できます。 それ以外の場合は、最新の変更があると思われるドメイン コントローラーを特定するまで、複数のドメイン コントローラーで次の手順を完了する必要があります。 その後、そのドメイン コントローラーを権限のあるドメイン コントローラーとして使用できます。

この操作を正常に行うには、少なくとも、Domain Adminsグループ、またはそれと同等の権限を持つグループのメンバである必要があります。 既定のグループ メンバーシップの詳細については、 Active Directory ローカル グループとドメインの既定のグループに関するページを参照してください。

残留オブジェクトを識別する

  1. 最新の変更が必要なドメイン コントローラーで、管理者特権のコマンド プロンプト ウィンドウを開きます。 高度なコマンド プロンプト ウィンドウを開くには、[スタート][すべてのプログラム][アクセサリ] の順にクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。

  2. アドバイザリ モードで次の repadmin コマンドを実行します。 これにより、実際に何も削除することなく、残留オブジェクトを評価できます。

     repadmin /removelingeringobjects <DestDCName> <SourceDCGUID> <LDAPPartition> /advisory_mode
    

    コマンド構文のプレースホルダーには、次の項目を置き換えます。

    • DestDCName: 残留オブジェクトのクリーンを対象とするドメイン コントローラーのホスト名。 たとえば、contoso.com ドメイン内の DC1 から残留オブジェクトを削除する場合は、DestDCName に<置き換えるdc1.contoso.com必要があります>。

    • SourceDCGUID: 次のコマンドを実行します。

      repadmin /showrepl AuthDCname |more
      

      ここで、AuthDCname は、権限のあるものとして選択したドメイン コントローラーのホスト名です。 SourceDCGUID> に表示される最初の DSA オブジェクト GUID に<置き換えます。

    • LDAPPartition: ターゲットとするパーティションのライトウェイト ディレクトリ アクセス パーティション (LDAP) 名。 たとえば、残留オブジェクトがドメインの contoso.com ドメイン パーティションにある場合は、LDAPPartition に dc=contoso,dc=com を <置き換えます>。

残留オブジェクトを識別するためのコマンドの例を次に示します。

repadmin /removelingeringobjects dc1.contoso.com 4a8717eb-8e58-456c-995a-c92e4add7e8e dc=contoso,dc=com /advisory_mode

必要に応じて、最新の変更があると思われるドメイン コントローラーを判断するまで、追加のドメイン コントローラーで前の手順を繰り返します。 権限のあるドメイン コントローラーとして、そのドメイン コントローラーを使用します。 スイッチなしでコマンドをrepadmin /removelingeringobjects/advisory_mode実行して、実際に残留オブジェクトを削除します。 必要に応じてコマンドを繰り返して、それらを持つ各ドメイン コントローラーから残留オブジェクトを削除します。

イベント ID 2042 に従ってレプリケーションを再起動する

レプリケーションの正常な状態は、ドメイン コントローラーが最新の情報を受け取る方法でオブジェクトとその属性に対する変更が収束する状態です。 パートナー ドメイン コントローラーが古い変更を渡していることが検出されると、パートナーからの変更は "異なる" と見なされます。パートナーは「分岐レプリケーション」に関与していると言われています。通常、ドメイン コントローラーは、分岐レプリケーションに関与していると見なされるすべてのパートナーとのレプリケートを停止します。

すべての残留オブジェクトを削除した後、レジストリを編集してイベントをログに記録したドメイン コントローラーでレプリケーションを再開できます。

注:

すべての残留オブジェクトを削除した後にのみ、レプリケーションを再起動します。 レジストリを正しく編集しないと、システムが正常に動作しなくなる場合があります。 レジストリを変更する前に、コンピューター上の重要なデータのバックアップを作成する必要があります。

この操作を正常に行うには、少なくとも、Domain Adminsグループ、またはそれと同等の権限を持つグループのメンバである必要があります。 既定のグループ メンバーシップの詳細については、 Active Directory ローカル グループとドメインの既定のグループに関するページを参照してください。

Repadmin を使用して、イベント ID 2042 に従ってレプリケーションを再起動する

  1. 管理者特権のコマンド プロンプトを開きます。 高度なコマンド プロンプト ウィンドウを開くには、[スタート][すべてのプログラム][アクセサリ] の順にクリックし、[コマンド プロンプト] を右クリックして、[管理者として実行] をクリックします。

  2. コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。

    repadmin /regkey <hostname> +allowDivergent
    
    パラメーター 説明
    /regkey で厳密 なレプリケーション整合性 レジストリ エントリ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parametersの値 (+) を有効にして無効にします (-)
    <ホスト> 単一のドメイン コントローラーの名前に置き換えるか、アスタリスク文字 (*) を使用してフォレスト内のすべてのドメイン コントローラーに変更を適用します。 ドメイン コントローラー名には、ドメイン ネーム システム (DNS) 名、ドメイン コントローラー コンピューター オブジェクトの識別名、またはドメイン コントローラー サーバー オブジェクトの識別名を使用できます。
    +allowDivergent 残留オブジェクトを持つレプリケーション パートナーを使用してレプリケーションを再開できるようにします。 このコマンドは、すべての残留オブジェクトが削除された後にのみ実行する必要があります。 レプリケーションが正常に実行されたら、スイッチを -allowDivergent 使用して、分岐レプリケーションが発生しないようにします。

注:

アスタリスク文字 (*) を使用してすべてのドメイン コントローラーに変更を適用しなかった場合は、分岐レプリケーションを許可するすべてのドメイン コントローラーに対して手順 2 を繰り返します。

古いレプリケーションから保護するためにレジストリをリセットする

残留オブジェクトが削除され、ソース ドメイン コントローラーからレプリケーションが正常に行われたことに満足した場合は、Repadmin を使用して、異なるレプリケーションを防ぎます。 分岐レプリケーションを防ぐには、次のコマンドを実行します。

repadmin /regkey <hostname> -allowDivergent

たとえば、contoso.com ドメイン内の DC1 という名前のドメイン コントローラーで分岐レプリケーションを制限するには、次のコマンドを実行します。

repadmin /regkey dc1.contoso.com -allowDivergent

注:

すべての残留オブジェクトを削除しなかった場合、レプリケーションを試みると、残留オブジェクトのレプリケーションが発生する可能性があります。 宛先ドメイン コントローラーで厳密なレプリケーション整合性が有効になっている場合、ソース ドメイン コントローラーを使用したレプリケーションは再びブロックされます。

データ収集

Microsoft サポートからの支援が必要な場合は、「 Active Directory レプリケーションの問題に TSS を使用して情報を収集する」で説明されている手順に従って情報を収集することをお勧めします。