Active Directory インストール ウィザード (Dcpromo.exe) を実行しようとすると、"スキーマの不一致" エラー メッセージが表示される

この記事では、Active Directory インストール ウィザード (Dcpromo.exe) を実行しようとすると、エラー "スキーマの不一致" を修正する解決策について説明します。

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

現象

[適用対象] セクションに記載されている Microsoft Windows のいずれかのエディションを実行しているコンピューターで Active Directory インストール ウィザード (Dcpromo.exe) を実行すると、"スキーマの不一致" エラー メッセージが表示されることがあります。

Microsoft Windows Server 2003 を実行している場合は、次のエラー メッセージが表示される場合があります。

Active Directory は、ソース ドメイン コントローラーのリモート ドメイン コントローラーの完全修飾コンピューター名から、パーティションのディレクトリ パーティション DN パスをレプリケートできませんでした。 関係するサーバー間でスキーマが一致しないため、レプリケーション操作は失敗しました。

Microsoft Windows 2000 を実行している場合は、次のエラー メッセージが表示される場合があります。

ディレクトリ サービスは、リモート サーバーのリモート サーバー名からパーティション パーティション名をレプリケートできませんでした。 関係するサーバー間でスキーマが一致しないため、レプリケーション操作は失敗しました。

原因

この問題は、次のいずれかの条件に該当する場合に発生する可能性があります。

  • 条件 1: ソース ドメイン コントローラーの Active Directory ディレクトリ サービスのコピーには、重複する複数値の属性が含まれています。
  • 条件 2: ソース ドメイン コントローラーのデータベース内の 1 つ以上の属性またはページが破損しています。
  • 条件 3: ソース ドメイン コントローラーには、スキーマの削除のために現在のスキーマでカバーされていない属性がデータベースに含まれています。

解決方法

この問題を解決するには、次の 2 つの方法のいずれかを使用します。 方法 1 は、条件 1 と条件 2 に対応します。 メソッド 2 は条件 3 に対応します。

方法 1: 条件 1 と条件 2 の解決

"スキーマの不一致" エラー メッセージは誤解を招きます。 エラーの根本原因は、スキーマ パーティション (CN) またはその中のオブジェクトとは関係がない可能性があります。 実際の問題は、重複する値を持つ複数値の属性など、データベース制約違反である可能性があります。

この問題をトラブルシューティングして解決するには、この 6 部構成の手順の手順に従います。

パート 1: 診断ログを有効にする

ソース ドメイン コントローラーで診断ログを有効にします。 それには、以下の手順を実行します。

重要

このセクション、方法、またはタスクには、レジストリの編集方法が記載されています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 保護を強化するため、レジストリを変更する前にレジストリをバックアップします。 こうしておけば、問題が発生した場合にレジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。

322756 Windows でレジストリをバックアップおよび復元する方法

  1. [スタート] ボタン、[ファイル名を指定して実行] の順にクリックし、「regedit」と入力して、[OK] をクリックします。

  2. 次のレジストリ サブキーを見つけてクリックします。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  3. 右側のウィンドウの [名前 ] 列で、 5 つのレプリケーション イベント レジストリ エントリを右クリックし、[ 変更] をクリックします。

  4. 「5」と入力し、[OK] をクリックします。

  5. 次のレジストリ エントリに対して手順 3 と 4 を繰り返します。

    • 7 内部構成
    • 8 ディレクトリ アクセス
    • 9 内部処理
    • 24 DS スキーマ
  6. 左側のウィンドウで、次のレジストリ サブキーをもう一度クリックします。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  7. [ ファイル ] メニューの [ エクスポート] をクリックします。

  8. [ 保存場所] ボックスで 、"スキーマの不一致" エラー メッセージが表示されるコンピューター上の管理者のデスクトップ フォルダーを開きます。 [ ファイル名 ] ボックスに 「Ntds_logging」と入力し、[OK] をクリック します

    注:

    通常、管理者のデスクトップ フォルダーは C:\Documents and Settings\Administrator\Desktop です。 ただし、システム ドライブ文字は異なる場合があります。 コンピューターで使用されているシステム ドライブを見つけるには、次の手順に従います。

    1. "スキーマの不一致" エラー メッセージが表示されるコンピューターにログオンします。

    2. [ スタート] ボタンをクリックし、[ 実行] をクリックして コマンドを入力し、[OK] をクリック します

    3. set と入力し、Enter キーを押します。

      "SystemDrive=" で始まる出力行には、システムが使用するドライブ文字が表示されます。

    4. 終了と入力し、Enter キーを押します。

パート 2: Active Directory の受信レプリケーションを強制する

NTDS 診断ログが有効になっているドメイン コントローラーから Active Directory の受信レプリケーションを実行するように移行先コンピューターに強制します。 複数のソース ドメイン コントローラーがある場合は、診断ログが有効になっているソース ドメイン コントローラーからレプリケーションが行われることを確認します。 これを行うには、次のいずれかの方法を使用します。

  • 「パート 1: 診断ログを有効にする」セクションの手順 1 ~ 5 を使用して、考えられるすべてのソース ドメイン コントローラーのログを増や HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics します。

  • ログが増加した "スキーマの不一致" エラーで参照されているソース ドメイン コントローラーを除くすべてのソース ドメイン コントローラーで Net Logon サービスを停止します。 これを行うには、次の手順を実行します。

    1. [ スタート] ボタンをクリックし、[ プログラム] をポイントし、[ 管理ツール] をポイントして、[ サービス] をクリックします。
    2. [Net Logon] を右クリックし、[停止] をクリックします。
    3. 無人 Active Directory インストール ウィザード の応答ファイルを作成します。
  • NTDS 診断ログが有効になっている "スキーマの不一致" エラーを報告している移行先コンピューターで Active Directory インストール ウィザード を実行します。 NTDS 診断ログが発生する正確な時刻は、昇格されているコンピューターが Windows 2000 または Windows Server 2003 を実行しているかどうかによって異なります。

    Active Directory インストール ウィザードは、次の Windows レジストリ キーに影響します。

    • Windows 2000 または Windows Server 2003 を実行しているヘルパー ドメイン コントローラーは、Active Directory インストール ウィザードがこれらのドメイン コントローラーを降格するまで、レジストリ サブキーの HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics ログ設定を保持します。
    • 昇格される Windows 2000 ベースのコンピューターでは、各プロモーション試行の HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 開始時にレジストリ サブキーが上書きされます。 ヘルパー ドメイン コントローラーからのスキーマ パーティションの受信レプリケーションが開始されるとすぐに、Windows 2000 ベースのドメイン コントローラーの昇格を試みるたびにレジストリ サブキーを事前HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics設定すると、Ntds_logging.reg をダブルクリックします。
    • Windows Server 2003 ベースのコンピューターは、レジストリ サブキーの既存の値を HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics 上書きしません。 ただし、既存の設定は、失敗したプロモーション試行のたびに削除されます。

パート 3: 宛先ドメイン コントローラーにレジストリを事前設定する

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics Windows 2000 または Windows Server 2003 を実行している宛先ドメイン コントローラーでサブキーを事前設定します。 これを行うには、次の手順を実行します。

  1. ソース ドメイン コントローラーで、「パート 1: 診断ログを有効にする」セクションの手順 1 ~ 5 に従います。

  2. 次のレジストリ サブキーを右クリックし、[ エクスポート] をクリックします。

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  3. [保存先] ボックス 、昇格するコンピューター上の管理者のデスクトップ フォルダーを開きます。 [ ファイル名 ] ボックスに 「Ntds_logging」と入力し、[OK] をクリック します

    注:

    Desktop フォルダーを見つけるには、パート 1 の手順 8 のメモを参照してください。

  4. 移行先ドメイン コントローラーで、昇格するコンピューターが Windows Server 2003 または Windows 2000 を実行しているかどうかに応じて、管理者のデスクトップ フォルダーに保存した Ntds_logging.reg ファイルを適切なタイミングでダブルクリックします。

パート 4: 重複する複数値属性を見つける

  1. ソース ドメイン コントローラーと宛先ドメイン コントローラーの両方でディレクトリ サービス イベント ログを調べて、問題のオブジェクトを見つけます。

  2. ソース ドメイン コントローラーで、ディレクトリ サービス イベント ログを確認し、昇格されるドメイン コントローラーに送信レプリケートされた最後のオブジェクトと属性をメモします。 問題オブジェクトは、ディレクトリ サービス イベント ログで参照される最後のオブジェクトまたは属性か、次に高い更新シーケンス番号 (USN) を持つ同じパーティション内のオブジェクトです。 参照されるオブジェクトのドメイン名パスと、レプリケートされた最後の属性を記録します。 ソース ドメイン コントローラーで、最後のイベント 1240 を探します。 宛先ドメイン コントローラーで、イベント 1203 を探します。

  3. このコマンドを ldifde 使用して、参照されるオブジェクトをエクスポートします。 これを行うには、次の手順を実行します。

    1. [ スタート] ボタンをクリックし、[ 実行] をクリックして コマンドを入力し、[OK] をクリック します
    2. 次のように入力し、Enter キーを押します。 LDIFDE -f MISMATCH -d <domain name path of object referenced in event log of the source domain controller>
  4. メモ帳または別のテキスト エディターで ldifde 出力を調べます。 重複する値を持つ属性に特に注意してください。 たとえば、次の切り捨てられた例には、重複する値を持つ属性が含まれています。

    msExchMonitoringResponses:: <重複の開始 #1> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpNzlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZWRvOnN0cigwKV1b U01UUFNlcnZlczdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazYLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyld JVMRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJ2ZJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQpRdWV1ZXMgLSAlVGFy
    Z2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gPJRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHZpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gFVRhcmdldEluc3RhbmNl Lk5hbWUl msExchMonitoringResponses:: <Duplicate#2> の開始 W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpNzlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZWRvOnN0cigwKV1b U01UUFNlcnZlc00dHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV 1yamtlbnZpbkBtZXRib2UuazYLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyld JVMRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZX2ZXJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQ pRdWV1ZXMgLSAlVGFyZ2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gPJRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDp zdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gPJRhcmdldEluc3RhbmNl Lk5hbWUl

  5. 重複する値が表示された場合は、重複の 1 つを使用 Adsiedit.msc するか、削除 ldifde します。 重複を削除したら、 Active Directory インストール ウィザード をもう一度実行してプロモーションを再試行します。

パート 5: データベースの破損を探す

根本原因は、ソース ドメイン コントローラー上のデータベースの破損である可能性があります。 データベースの破損を見つけて修復するには、次の手順に従います。

  1. ログに記録された最後の 1240 イベントについて、ソース ドメイン コントローラーのディレクトリ サービス イベント ログを調べます。 このイベントは、内部処理イベント 1173 の直前にログに記録される可能性があります。 最後の 1240 イベントで参照されているオブジェクトの DN パスをメモし、ソース ドメイン コントローラーのコンソールでRepadmin.exe ツールを実行します。 これを行うには、次の手順を実行します。

    1. [ スタート] ボタンをクリックし、[ 実行] をクリックして コマンドを入力し、[OK] をクリック します
    2. 次のコマンドを入力し、Enter キーを押します。
    REPADMIN /SHOWMETA CN=Secret,CN=Schema,CN=Configuration,DC=CORP,DC=COM  
    
  2. ソース ドメイン コントローラーからレプリケートされた最後の送信レプリケートされたオブジェクトのメタデータを表示します。 重複する値が見つからない場合は、ソース ドメイン コントローラーのディレクトリ サービス イベント ログで、1173 イベントの前にログに記録された最後の 1240 イベントを調べます。 サンプルの 1240 イベントを次に示します。

  3. ソース ドメイン コントローラーに repadmin /showmeta 記録された最後の 1240 イベントで参照されているオブジェクトのドメイン名パスに対してコマンドを実行します。 たとえば、CORP.COM ドメイン内のドメイン コントローラーに対して手順 2 のサンプル イベントを使用すると、構文は次のようになります。

    REPADMIN /SHOWMETA CN=Secret,CN=Schema,CN=Configuration,DC=CORP,DC=COM
    

    出力で不整合または疑わしい値を探します。特に、ローカル USN 列と発信元時刻列で確認します。 たとえば、次の切り捨てられた出力例では、defaultObjectCategory と ObjectClass という 2 つの属性に、USN 番号と無効な日付と時刻のスタンプが 0 と表示されます。

    コマンドからの repadmin /showmeta 切り捨てられた出力:

    CN=Secret,=Schema,CN=Configuration,DC=CORP,DC=COM オブジェクト Loc. USNOriginating Time: Attribute 21962002-01-29 05:52.47 instanceType 18295873486194836 4446-09-07 21: 51.13defaultObjectCategory 182958734861948362002-01-29 05:52.47 objectClass

  4. 出力で参照される問題オブジェクトが重要なオブジェクトでない場合は、オブジェクトの ldifde バックアップを作成し、オブジェクトを削除します。 Active Directory のスキーマ パーティションに存在する問題オブジェクトは削除しないでください。

  5. Active Directory データベースに対して NTDSUTIL ファイルの整合性チェックを実行します。 これを行うには、次の手順を実行します。

    1. Windows 2000 では、setpwd を使用して DSRM パスワードを変更します。 Windows Server 2003 では、ntdsutil を使用して DSRM パスワードを変更します。

      Windows Server 2003 では、次のオプションが機能します。

      322672 Windows Server で Directory Services 復元モードの管理者アカウントのパスワードをリセットする方法

    2. DSREPAIR モードでソース ドメイン コントローラーを起動します。

      注:

      ドメイン コントローラーが DSREPAIR モードの間に接続しようとしたときに、DFS ルート情報または DFS リンク情報にアクセスしようとすると、"アクセス拒否" エラー メッセージが表示される場合があります。 この動作は仕様です。

    3. Windows コマンド プロンプトから NTDSUTIL ファイルの整合性チェックを実行します。

    4. NTDSUTIL 出力でエラーを探します。

  6. NTDSUTIL 整合性チェックでログに記録されたジェット エラー -1206 の場合は、次のオプションを調査します。 NTDSUTIL を使用するか、または ESENTUTL に相当するデータベースを使用して、破損した Active Directory データベースを修復しないでください。

    1. フォレスト内の新しいドメイン コントローラーをソースとする他の候補ドメイン コントローラーが存在する場合は、問題のあるソース ドメイン コントローラーをオフラインにして Active Directory インストール ウィザードを実行します。

    2. ドメイン内に他のドメイン コントローラーが存在し、ヘルパー ドメイン コントローラーに固有の重大なシステム状態がない場合は、元のソース ドメイン コントローラーを正常に降格してみてください。 それ以外の場合は、強制的に降格し、フォレストからメタデータを削除します。 Active Directory インストール ウィザードを実行して、フォレスト内のすべてのドメイン コントローラーで削除のエンド ツー エンド レプリケーションが発生した後、元のドメイン コントローラーをフォレストに追加します。

    3. 次のすべての条件に該当する場合は、そのドメイン コントローラーのシステム状態を復元します。

      • 元のソース ドメイン コントローラーは、そのドメイン内の唯一のドメイン コントローラーです。
      • 重要なシステム状態が含まれています (つまり、フォレスト ルート ドメインが含まれているか、Active Directory のコピー内のオブジェクトに多くの投資があります)。
      • 有効なシステム状態のバックアップが存在します (つまり、バックアップは廃棄期間の日数未満であり、破損したオブジェクトは含まれていない)。

      注:

      単一のレプリカを含むパーティションのシステム状態の復元は、実質的にそのパーティションの権限のある復元です。

    4. 元のソース ドメイン コントローラーがドメイン内の唯一のドメイン コントローラーであり、重大なシステム状態が含まれているが、有効なシステム状態のバックアップが存在しない場合は、次の操作を検討してください。

    • Microsoft Windows NT 4.0 ベースのバックアップ ドメイン コントローラー (BDC) をドメインに追加します。 このオプションは、混在モードまたは 4.0 ベースの BDC Windows NTがネイティブ モード ドメインの Windows 2000 ベースのドメイン コントローラーでレプリケートできるようにするスイッチを前提としています。
    • Windows NT 4.0 ベースの BDC をプライベート ネットワークに配置します。
    • Windows NT 4.0 ベースの BDC をプライマリ ドメイン コントローラー (PDC) に昇格させます。
    • Windows NT 4.0 ベースの PDC を Windows 2000 または Windows Server 2003 にアップグレードします。
    • フォールト トレランスと負荷分散のためにレプリカ ドメイン コントローラーを追加します。
    • Active Directory プログラムに必要なスキーマ変更を追加します。

パート 6: 診断ログをオフにする

問題のトラブルシューティングと解決が完了したら、診断ログをオフにします。 これを行うには、「パート 1: 診断ログを有効にする」に移動し、手順 1 ~ 5 に従います。 次のレジストリ エントリを 0 (ゼロ) に設定します。

  • 5 レプリケーション イベント
  • 7 内部構成
  • 8 ディレクトリ アクセス
  • 9 内部処理
  • 24 DS スキーマ

方法 2: 条件 3 の解決

"スキーマの不一致" エラーの 3 番目の原因は、ヘルパー ドメイン コントローラーのデータベースに現在のスキーマでカバーされていない属性がある場合に発生します。 この問題は、Windows 2000 用 Service Pack 3 (SP3) がインストールされる前に、Windows 2000 ドメイン コントローラーでスキーマ オブジェクトが削除された場合に発生する可能性があります。

この問題を解決するには、次の手順を実行します。

  1. スキーマにない属性を持つオブジェクトを識別します。 これを行うには、次の点を考慮してください。

    • Windows 2000 を実行している場合、1039 イベントは、影響を受けたオブジェクトの DN を使用してソース ドメイン コントローラーに記録されます。
    • 他のオペレーティング システムを実行している場合は、ソースのレベル 5 (5) でレプリケーション イベントを有効にします。 送信レプリケーション中は、出荷されるオブジェクトと属性がログに記録されます。 エラーが発生したら、移行先コンピューターに出荷される次のオブジェクトを探します。
  2. 追加の属性を持つオブジェクトを特定したら、次のいずれかの操作を行います。

    • オブジェクトを削除します。 問題のある属性は削除され、廃棄石はレプリケーション用に出荷されます。
    • 対象の属性を削除するには、オブジェクトを編集します。
    • 削除されたスキーマ エントリを再追加します。