図1 複製が実行できないとしてドメイン・コントローラに記録されたエラー・メッセージ
図1 複製が実行できないとしてドメイン・コントローラに記録されたエラー・メッセージ
[画像のクリックで拡大表示]
図2 テスト・モードでオブジェクトの削除を実行した画面
図2 テスト・モードでオブジェクトの削除を実行した画面
[画像のクリックで拡大表示]
図3 オブジェクトの削除を実行した画面
図3 オブジェクトの削除を実行した画面
[画像のクリックで拡大表示]
図4 イベント・ログに記録された削除イベント
図4 イベント・ログに記録された削除イベント
[画像のクリックで拡大表示]
図5 ドメイン・コントローラ間での複製を強制実行した画面
図5 ドメイン・コントローラ間での複製を強制実行した画面
[画像のクリックで拡大表示]

repadmin /removelingeringobjects 複製先DCのFQDN 複製元DCのGUID 名前付けコンテキスト

 Active Directoryでは,「削除されたオブジェクト」はisDeletedという削除フラグをつけてDeleted Objectsという削除オブジェクトのための隠しコンテナに移動されます。つまり,実際にはオブジェクトはすぐに削除されず,tombstone有効期限(通常は60日間)を過ぎた段階で,ガーベジ・コレクションにより完全削除します。

 つまり,60日間以上複製できなかったオブジェクトについては,それがシステム内で整合性があるかどうかがわかりません。このため,Active Directoryでは複製が禁止されるように実装されています。このような60日間以上複製できなかったオブジェクトを持つドメイン・コントローラでは,複製が中断してしまい正しく複製が完了しません(図1)。

 こういったドメイン・コントローラでは,該当するオブジェクトが複製の邪魔をしています。このオブジェクトを削除することで,ドメイン・コントローラの複製を正常化させることができます。このためにはrepadmin /removelingeringobjectsサブコマンドを以下のように実行します。

repadmin /removelingeringobjects 複製先DCのFQDN 複製元DCのGUID 名前付けコンテキスト

 実際にはまずテスト・モードで実行して,実際に削除ができるかどうかテストします。具体的には,/advisory_modeオプションを付けて実行します(図2)。各パーティション別(スキーマ/設定/ドメインなど)に実行した方がよい場合もあります。テストが完了したら,実際にオブジェクトを削除させるようにコマンドを実行します(図3)。削除が無事に完了すると,イベント・ログにもその記録が残ります(図4)。

repadmin /removelingeringobjects 複製先DCのFQDN 複製元DCのGUID 名前付けコンテキスト /advisory_mode

 削除が済んだら,以下のようにrepadmin /replicateサブコマンドなどを使ってドメイン・コントローラ間で改めて強制的に複製を実行すれば,問題が解決するはずです(図5)。ただし,複製元のドメイン・コントローラ情報が正しいことを十分に確認してください。

repadmin /replicate 複製先DC名 複製元DC名 名前付けコンテキスト /force

 なお,この問題については,マイクロソフトのサポート技術情報でも公開しています。必要に応じて「Windows Server 2003でActive Directoryの古いオブジェクトによってイベントID1988が生成される」のWebページをご参照ください。