この記事では、ドメイン コントローラーを復元するとドメイン コントローラー間の不整合が発生する問題の解決に役立ちます。
適用対象: Windows Server 2012 R2
元の KB 番号: 316829
現象
ドメイン コントローラーを復元すると、ドメイン コントローラー間の不整合を示すイベント ID 1587 が発生する可能性があります。 この場合、一部の残留オブジェクトが復元されたドメイン コントローラーに存在する可能性があります。 また、復元されたドメイン コントローラー上の新しいオブジェクトはレプリケートされません。
原因
この問題は、ドメイン コントローラーが新しい呼び出し ID を割り当て、元の highwater マークを使用しているために発生します。
回避策
この問題を回避するには、復元されたドメイン コントローラーを降格してから昇格します。 影響を受けるサーバーを降格する前に、影響を受けるサーバーを別のドメイン コントローラーに強制的に完全にレプリケーションします。 (大規模なドメインでは、完全同期がリソースを大量に消費する可能性があります)。ドメイン パーティションと構成パーティションで完全同期を実行します。 次の行は、同期の実行に使用する Repadmin コマンドの構文を示しています。
repadmin /sync <Naming Context> <Dest DC> <Source DC GUID> [/force] [/full]
次の行は、このコマンドの使用例です。
repadmin /sync DC=domain,DC=root good_DC dc1 122a5239-36b3-488a-b24c-971ed0ca8a46 /force /full
このコマンドの例では、次の手順を実行します。
- "DC=domain,DC=root" はドメインの名前付けコンテキストです。
- "good_DC" は宛先 DC です。 これは、更新プログラムを受け取る優れたパートナーです。
- DSA GUID は、復元された DC のレプリケーション GUID です。 これは、復元されたサーバーで
Repadmin /showreps
を実行することで取得できます。 GUID は、"DC オブジェクト GUID" の上部に表示されます。
同期が成功すると、次のメッセージが表示されます。122a5239-36b3-488a-b24c-971ed0ca8a46 から正常に完了Good_DC同期します。
次のようなコマンドを使用して、構成の名前付けコンテキストのプロセスを繰り返します。
repadmin /sync cn=configuration,DC=domain,DC=root good_DC dc1 122a5239-36b3-488a-b24c-971ed0ca8a46 /force /full
これを行った後、問題は解決されない可能性があります。 これを行った後、修正プログラムをインストールするか、降格してから、ドメイン コントローラーを昇格して問題を解決します。
状態
Microsoft は、この記事の冒頭に記載されている Microsoft 製品の問題であることを確認しました。 この問題は、Windows 2000 Service Pack 3 で最初に修正されました。
詳細
ドメイン コントローラーを復元すると、最もコミットされた USN がバックアップが作成された時点にロールバックされます。 ドメイン コントローラーの呼び出し ID は廃止され、新しい呼び出し ID が割り当てられます。 パートナーが復元後に初めてレプリケートしようとすると、次のメッセージが記録されます。
イベントの種類: 情報
イベント ソース: NTDS レプリケーション
イベント カテゴリ: (5)
イベント ID: 1587
日付: <DateTime>
時刻: <DateTime>
ユーザー: CONTOSO\CO-NA-DC-01$
コンピューター: CO-DC-02
説明:
objectGuid d0a6a575-9702-4f4e-bf68-bb2a9f875188 に対応するディレクトリ サービス エージェント (DSA) は、USN 94727614 でのバックアップからのローカル DSA の最新の復元の前にあるブックマークから始まる変更を要求しました。 ブックマークは次のように調整されています。以前の呼び出し ID: bc546028-fae7-4978-abe0-d294694da32b
以前のオブジェクト更新 USN: 95853579
前のプロパティの更新 USN: 95853579
新しい呼び出し ID: ae6286cb-740b-4bb3-ace7-9577efa9dc9f
新しいオブジェクト更新 USN: 94727614
新しいプロパティ更新 USN: 94727614
このイベントは、復元されたドメイン コントローラーの場合に一般的です。 単独では、これは問題を示すものではありません。 これは、復元されたドメイン コントローラーで作成されたオブジェクトが "サイレント" にレプリケートされない場合に問題になります。
問題のシナリオでは、最も高い USN がロールバックされます。 ただし、ブックマーク (または "最新" ベクター リセット) 中に、ソース ドメイン コントローラーは復元前に存在していた最も高い USN 値を提供します。 最大のCommittedUSN 属性値の間に USNchanged 値を持つオブジェクトは、レプリケーションでは考慮されません。
たとえば、ドメイン コントローラー 1 の USN が最も高い 100 であるとします。 そのレプリケーション パートナーであるドメイン コントローラー 2 には、ドメイン コントローラー 1 の "最新" ベクトルが 100 です。
最大 USN が 50 のバックアップからドメイン コントローラー 1 を復元します。 ドメイン コントローラー 2 を使用した次のレプリケーションの後、ドメイン コントローラー 1 はブックマークを 100 にリセットします (50 にする必要があります)。 ドメイン コントローラー 1 は、変更 51、52、および 53 を生成します。 ドメイン コントローラー 2 は、レプリケーションをネゴシエートするときに、変更が 100 まで変更されていると考えるので、変更を考慮することはありません。 ドメイン コントローラー 1 は変更を続け、最終的には 101 に達します。 変更 101 はレプリケートされますが、変更 51 から 100 はレプリケートされません。
場合によっては、この状態を検出できます。 復元されたドメイン コントローラー上の rootDSE オブジェクトの現在の highestCommittedUSN 属性を読み取る場合は、グループまたは ADSI Edit を使用します。 次に、パートナーの 1 人の repadmin /showreps /verbose
コマンドからの出力と比較します。 Repadmin 出力で、各名前付けコンテキストの復元されたドメイン コントローラーの "USN ###/OU" 値を探します。 Repadmin の値が highestCommittedUSN 属性より大きい場合、復元されたドメイン コントローラーで問題が発生しています。
復元されたドメイン コントローラーが、その highestCommittedUSN 属性が、(この記事の例のように) 他のドメイン コントローラーに記録されている "最新の状態" ベクターに到達または超過する十分な更新を発生させた場合、一部の変更はレプリケーションに考慮されません。 ただし、新しい変更はレプリケートされます。変更が反映されない場合は、"残留オブジェクト" と呼ばれます。