次の方法で共有


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 で発生する可能性があります。 szTargetCheckpointPathszTargetInstanceLogPath の両方が指定されていないか、両方とも指定されていない場合などです。 つまり、両方が一致し、両方が指定されているか、両方が指定されていない必要があります。

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 が使用されます。

パスのしくみを理解するには、次のフロー チャートを使用します。

ESE_Documentation_ese1

要件

要件

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