"スキーマの不一致" エラー メッセージは、Active Directory インストール ウィザードを実行しようとするときに発生します (Dcpromo.exe)

この記事では、Active Directory インストール ウィザードを実行しようとするときにエラー "スキーマの不一致" を修正する方法をDcpromo.exe。

適用対象:  Windowsサーバー 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: 診断ログを有効にする

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

重要

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

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: \ ドキュメントと管理者デスクトップ設定 \ です \ 。 ただし、システム ドライブ文字は異なる場合があります。 コンピューターが使用するシステム ドライブを見つけるには、次の手順を実行します。

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

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

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

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

    4. 「exit」と 入力し、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 診断ログが発生する正確な時刻は、昇格するコンピューターが 2000 年または Windows Server 2003 で実行Windowsによって異なります。

    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 ベースのドメイン コントローラーを昇格するごとにレジストリ サブキーを事前に設定し始めたら、すぐに Ntds_logging.reg をダブルクリックします。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics
    • Windowsサーバー 2003 ベースのコンピューターは、レジストリ サブキー内の既存の値 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics を上書きしません。 ただし、既存の設定は、プロモーションの試行が失敗したごとに削除されます。

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

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

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

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

    注意

    デスクトップ フォルダーを見つけるには、パート 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:: <Start of Duplicate #1> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c 3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZ ICVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTDGF0ZVN0cmluZyUuBSZXBvcnRlZZZBdGF0dXMgaXM6DQ pRdWV1ZXMgLSAlVGFy
    Z2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl msExchMonitoringResponses:: <Start of Duplicate#2> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQ pRdWV1ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFyZ2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY 2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl

  5. 重複する値が表示される場合は、 Adsiedit.msc 重複 ldifde する値の 1 つを使用または削除します。 重複を削除した後、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. ソース ドメイン コントローラーにログオンした最後の 1240 イベントで参照されているオブジェクトのドメイン名パスに対してコマンド repadmin /showmeta を実行します。 たとえば、手順 2 のサンプル イベントを CORP.COM ドメインのドメイン コントローラーに使用すると、構文は次のようになります。

    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サーバー 2003 は ntdsutil を使用して DSRM パスワードを変更します。

      次のオプションは、Windows Server 2003 で動作します。

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

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

      注意

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

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

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

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

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

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

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

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

      注意

      1 つのレプリカを含むパーティションのシステム状態の復元は、事実上そのパーティションの権限を持つ復元です。

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

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

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

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

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

方法 2: 条件 3 の解決方法

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

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

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

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

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