次の方法で共有


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: 診断ログを有効にする

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

重要

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

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

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  3. 右側のウィンドウの Name 列で、 5 レプリケーション イベント レジストリ エントリを右クリックし、 Modifyをクリックします。

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

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

  7. [ File メニューの Export をクリックします。

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

    Note

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

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

    2. [開始] をクリック、[実行] をクリックし、「command」と入力して、[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. Startをクリックし、Programs をポイントし、Administrative Tools をポイントして、[Services] をクリックします。
    2. [ Net Logon を右クリックし、[ Stop] をクリックします。
    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: 移行先ドメイン コントローラーにレジストリを事前に設定する

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

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ntds\Diagnostics

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

    Note

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

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

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

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

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

  3. ldifde コマンドを使用して、参照されているオブジェクトをエクスポートします。 手順は次のとおりです。

    1. [開始] をクリック、[実行] をクリックし、「command」と入力して、[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> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV 0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQpRdWV1ZXMgLSAlVGFy
    Z2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl msExchMonitoringResponses:: <Start of Duplicate#2> W19fQ0xBU1M6c3RyKDE3KV1TTVRQRXZlbnRDb25zdW1lcltOb3RpZnlPbkVycm9yOnN0cigyKV0tMV tSZXNwb25kVG9XaGljaE9iamVjdHM6c3RyKDEpXTBbT2JqZWN0c1RvUmVzcG9uZFRvOnN0cigwKV1b U01UUFNlcnZlcjpzdHIoNCldQUxFWFtUb0xpbmU6c3RyKDI1KV1yamtlbnZpbkBtZXRib2UuazEyLm 5qLnVzW01lc3NhZ2U6c3RyKDMxNyldJVRhcmdldEluc3RhbmNlLk5hbWUlIGhhcyByZXBvcnRlZCBh ICVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUuICBSZXBvcnRlZCBzdGF0dXMgaXM6DQ pRdWV1ZXMgLSAlVGFyZ2V0SW5zdGFuY2UuUXVldWVzU3RhdGVTdHJpbmclDQpEcml2ZXMgLSAlVGFy Z2V0SW5zdGFuY2UuRGlza3NTdGF0ZVN0cmluZyUNClNlcnZpY2VzIC0gJVRhcmdldEluc3RhbmNlLl NlcnZpY2VzU3RhdGVTdHJpbmclDQpNZW1vcnkgLSAlVGFyZ2V0SW5zdGFuY2UuTWVtb3J5U3RhdGVT dHJpbmclDQpDUFUgLSAlVGFyZ2V0SW5zdGFuY2UuQ1BVU3RhdGVTdHJpbmclDQpbU3ViamVjdDpzdH IoNTkpXSVUYXJnZXRJbnN0YW5jZS5TZXJ2ZXJTdGF0ZVN0cmluZyUgb24gJVRhcmdldEluc3RhbmNl Lk5hbWUl

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

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

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

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

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

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

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

    出力で一貫性のない値または疑わしい値を探します。特に、[Local USN] 列と [元の時刻] 列で検索します。 たとえば、次の切り捨てられた出力例では、defaultObjectCategory と ObjectClass の 2 つの属性に、有効ではない USN 番号と 0 個の日付と時刻のスタンプが含まれています。

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

    CN=Secret,=Schema,CN=Configuration,DC=CORP,DC=COM object 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 でディレクトリ サービス復元モード管理者アカウントのパスワードをリセットする方法

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

      Note

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

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

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

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

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

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

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

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

      Note

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

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

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

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