Active Directory サーバーはオフラインで復元する必要があります。 ディレクトリ サービス復元モードでシステムを再起動する必要があります。 このモードでは、オペレーティング システムは Active Directory Domain Services なしで実行されており、すべてのユーザー検証はレジストリのセキュリティ アカウント マネージャー (SAM) を通じて行われます。 Active Directory Domain Services を復元するには、復元されたドメイン コントローラーのローカル管理者の資格情報を使用します。
注
現在、ドメイン コントローラーが ネットワークを使用してセーフ モードで実行するように構成されている場合、そのモードではシステム管理者はサインインできません。
復元関数の呼び出し元には 、SE_RESTORE_NAME アクセス権限が必要です。 DsSetAuthIdentity 関数を使用して、ディレクトリのバックアップおよび復元関数が呼び出されるセキュリティ コンテキストを設定します。
Active Directory Domain Services を復元するときは、他のシステム状態コンポーネントも復元する必要があることに注意してください。
Active Directory Domain Services を復元するには、次の手順に従います。
- DsIsNTDSOnline 関数を呼び出して、Active Directory Domain Services が実行されているかどうかを確認します。
- Active Directory Domain Services が実行されていない場合は、復元操作を初期化し、バックアップ コンテキスト ハンドルを取得するために DsRestorePrepare 関数が呼び出されます。 Active Directory Domain Services が実行されている場合は、復元できず、復元アプリケーションで復元操作が失敗する必要があります。 DsRestorePrepare 関数では、バックアップ操作中に DsBackupPrepare 関数から有効期限トークンを取得する必要があります。
- DsRestoreGetDatabaseLocations 関数を呼び出して、ファイルを復元するディレクトリを決定します。 この関数が失敗した場合は、元のバックアップ ソース ディレクトリにデータを復元します。これは、データのバックアップ元のディレクトリです。
- DsRestoreRegister 関数を呼び出して、復元操作用に Active Directory サーバーを準備し、復元ディレクトリをロックします。
- 標準の Win32 関数を使用してファイルを復元します。 まず、宛先ディレクトリ内のすべてのファイルを削除します。次に、バックアップ ファイルをコピー先ディレクトリにコピーします。
- DsRestoreRegisterComplete 関数を呼び出して、復元が完了したことを示します。
- DsRestoreEnd 関数を呼び出して、コンテキストに関連付けられているすべてのリソースを解放します。
ディレクトリ サービス復元モードで復元した後、ドメイン コントローラーを通常モードで再起動する必要があります。 ディレクトリ サービスが開始されると、ドメイン コントローラーは通常の整合性チェックを実行し、復元されたディレクトリはオンラインになります。
Active Directory サーバーの復元は常に 2 部構成の操作であることに注意してください。 まず、バックアップが作成された時刻にデータベースを復元します。 次に、新しく復元された DSA がドメインとエンタープライズ フォレスト内の他の DSA からバックアップ後の更新をレプリケートするディレクトリをレプリケートします。
ディレクトリ サービスのレプリカを含む Windows 2000 または Windows Server 2003 で実行されているコンピューターは、ドメイン コントローラーです。
DsRestoreRegister 関数は、復元が正常に機能するためにレジストリの復元プロセスで存続する必要があるデータをレジストリに追加します。 このレジストリ データを確実に保持するには、RegReplaceKey 関数が呼び出された後にコンピューターを再起動する前に、DsRestore* 関数を使用して Active Directory Domain Services を復元します。 このプロセスは、コンピューターが再起動され、DsRestoreRegister 関数によって追加されたレジストリ データが、レジストリの復元操作中に置き換えられないように除外されるまで、RegReplaceKey がレジストリ ハイブを実際に置き換えないためです。