JetExternalRestore 関数
適用対象: Windows |Windows Server
JetExternalRestore 関数
JetExternalRestore 関数は、外部バックアップ API で取得された外部バックアップを復元し、復元プロセス中に再生するログ ファイル番号の範囲を指定します。 これはハード リカバリと呼ばれ、 JetInit 関数によって実行されるソフト リカバリとは似ていますが、異なります。
JET_ERR JET_API JetExternalRestore(
__in JET_PSTR szCheckpointFilePath,
__in JET_PSTR szLogPath,
__in_opt JET_RSTMAP* rgrstmap,
__in long crstfilemap,
__in JET_PSTR szBackupLogPath,
__in long genLow,
__in long genHigh,
__in JET_PFNSTATUS pfn
);
パラメーター
szCheckpointFilePath
szTargetInstanceCheckpointPath が指定されていないか、アクティブまたは実行中のインスタンスが既にある場合に、回復中に使用するチェックポイント ファイルのパス。
szLogPath
復旧の最終フェーズ (元に戻す) のログのパスまたはディレクトリ。場合によってはロールフォワード ログのパスまたはディレクトリ。 このパスは 、szBackupLogPath と同じにすることができます。
rgrstmap
これは、 JET_RSTMAP 構造体の配列です。 これは、古いデータベース パスと新しいデータベース パスまたはファイル名のマップです。 これは、データベースをバックアップ元の場所以外の場所に復旧する必要がある場合があるために使用されます。 複数のデータベースが 1 つのログ セットにアタッチされている場合、復元マップでは、復元するデータベースのサブセットを指定できます。
crstfilemap
rgrstmap 配列パラメーター内のエントリの数。
szBackupLogPath
ログ ファイルが復元されるディレクトリへのパス。 これらは、外部バックアップ シーケンス中に読み取られたログです。 このパスは、szLogPath と同じにすることができます。
genLow
szBackupLogPath から再生される最も小さいログ ファイル番号。 符号なし long の完全な忠実性は維持する必要がありますが、現在のバージョンのエンジンでは、この数値は0x00000から0xFFFFFまでの範囲の 16 進数です。 これは、将来のバージョンでは変更される可能性があります。
genHigh
szBackupLogPath から再生されるログ ファイルの最大数。 符号なし long の完全な忠実性は維持する必要がありますが、現在のバージョンのエンジンでは、この数値は0x00000から0xFFFFFまでの範囲の 16 進数です。 これは、将来のバージョンでは変更される可能性があります。
pfn
回復の進行状況を報告するための状態コールバック。
戻り値
この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errOutOfMemory |
完了するのに十分なメモリを割り当てられなかったため、操作が失敗しました。 |
JET_errInvalidParameter |
指定されたパラメーターの 1 つに、予期しない値が含まれていたか、別のパラメーターの値と組み合わせると意味のない値が含まれていました。 これは 、JetExternalRestore で発生する可能性があります。 szTargetCheckpointPath と szTargetInstanceLogPath の両方が指定されていないか、両方とも指定されていない場合などです。 つまり、両方が一致し、両方が指定されているか、両方が指定されていない必要があります。 |
JET_errDatabaseCorrupted |
これは、データベースが破損しているか、認識されないファイルであることを示します。 |
JET_errFileNotFound |
指定したパスで見つからなかったため、要求されたファイルを開けなかったため、操作は失敗しました。 |
JET_errInvalidPath |
指定したパスが見つからなかったため、操作は失敗しました。 |
JET_errRestoreOfNonBackupDatabase |
このエラーは、復元時に指定されたデータベース ファイルが、外部バックアップでバックアップされたデータベースではない場合に返されます。 |
JET_errStartingRestoreLogTooHigh |
このエラーは、 szBackupLogPath 内のログ ファイルの 1 つに 、genLow または pLogInfo.ulGenLow で指定されたログ生成以下のログ生成がある場合に返されます。 |
JET_errEndingRestoreLogTooLow |
このエラーは、 szBackupLogPath 内のログ ファイルの 1 つが genHigh または pLogInfo.ulGenHigh で指定されたログ生成を超える場合に返されます。 |
JET_errBadRestoreTargetInstance |
指定された szTargetInstanceLogPath は、初期化されたインスタンスに属していません。 このエラーは、Windows XP 以降でのみ返されます。 |
JET_errRunningInOneInstanceMode |
データベース エンジンは、単一インスタンス モードで外部復元またはハード リカバリを実行できません。 このエラーは、Windows XP 以降でのみ返されます。 |
成功すると、rgrstmap のすべてのデータベースが完全に復旧され、クリーンまたは一貫性のある状態になります。 この時点で、データベースを既存のインスタンスに再マウントできます。
失敗した場合、エンジンはデータベースを復旧できませんでした。 データベースが無効な状態であり、ハード 回復を再試行するには、データベース全体を再度復元する必要があります。 通常、このような状況の原因は、ディスクまたはログの破損、または他の形式のログ管理の誤り、または連続しないログ セットです。
注釈
"ハード" 回復のしくみを理解するには、回復の 3 つのフェーズがあり、2 番目のフェーズには 2 つの部分があることを理解する必要があります。 フェーズ I では、バックアップされたデータベースを一貫性のあるものにするためにログが必要です (または、増分ログの初期セットを使用できます)。 フェーズ II では、使用可能な追加のロールフォワード ログが使用され、データベースの一貫性が保たれます。 追加のロールフォワード ログの再生もあります。 フェーズ III は、回復の元に戻すフェーズです。
フェーズ I: データベースを一貫した状態 (またはログ ファイルの初期セット) に戻すために復元する必要があるログのセットの再生が実行されます。 基本的に、これは復元されるデータベースに対して省略可能ではないログ ファイルのセットの再生です。 この範囲のログに不足しているログがある場合、復元は失敗します。 これらのログは、 szBackupLogPath パラメーターで指定されたディレクトリに配置する必要があります。
フェーズ II: 必要に応じて、増分バックアップまたは差分バックアップおよびアクティブ インスタンスのログ ファイルからログ ファイルをロールフォワードするログ ファイルのセットが存在する場合があります。 増分バックアップまたは差分バックアップからのログ ファイルの場合、ログ ファイルは 、szBackupLogPath パラメーターまたは szTargetInstanceLogPath パラメーターで指定されたディレクトリに配置でき、前者は推奨されるディレクトリです。 ロールフォワード フェーズ (フェーズ II) に使用されるログは、フェーズ I の間に再生されるのと同じ一連のログから取得する必要があり、フェーズ I ログのギャップなしでログ番号を継続的にインクリメントする必要があります。 アクティブなインスタンスで現在使用されているログ ファイルでデータベースを完全に最新の状態に再生するには、 szTargetInstanceLogPath パラメーターと szTargetInstanceCheckpointPath パラメーターを指定する必要があります。 これは、他のデータベースがそのログ セットにアタッチされている間でも実行できます。
フェーズ III: 復旧の最終フェーズでは、コミットされていないトランザクションがロールバックされます。これには、新しいログ ファイルの生成とチェックポイント ファイルの更新が必要です。 このフェーズは、"元に戻す" と呼ばれることもあります。 このフェーズで使用するチェックポイント ファイル パスは、フェーズ III ログの場所に似たパスです。つまり、フェーズ III に szLogPath を使用する場合は、回復 szTargetInstanceCheckpointPath のフェーズ III に szTargetInstanceLogPath を使用する場合は、szCheckpointFilePath が使用されます。
パスのしくみを理解するには、次のフロー チャートを使用します。
要件
要件 | 値 |
---|---|
Client |
Windows Vista、Windows XP、または Windows 2000 Professional が必要です。 |
[サーバー] |
Windows Server 2008、Windows Server 2003、または Windows 2000 Server が必要です。 |
Header |
Esent.h で宣言されています。 |
Library |
ESENT.lib を使用します。 |
[DLL] |
ESENT.dllが必要です。 |
Unicode |
JetExternalRestoreW (Unicode) および JetExternalRestoreA (ANSI) として実装されます。 |
参照
JET_ERR
JET_PFNSTATUS
JET_RSTMAP
JET_LOGINFO
JetBeginExternalBackup
JetInit