次の方法で共有


JetRestore 関数

適用対象: Windows |Windows Server

JetRestore 関数

JetRestore 関数は、アタッチされているすべてのデータベースを含め、インスタンスのストリーミング バックアップを復元および復旧します。 この関数は、主に Windows 2000 以前のデータベース エンジンとの下位互換性を確保するために使用され、データベースのインスタンスは 1 つだけ許可されます。 この場合、アクティブなインスタンスは復元されるインスタンスです。 JetRestore では、復元されたデータベースの場所を指定できません。

JET_ERR JET_API JetRestore(
  __in          JET_PCSTR sz,
  __in          JET_PFNSTATUS pfn
);

パラメーター

Sz

バックアップが配置されているフォルダー。 バックアップは JetBackup 関数を使用して生成されている必要があります。

pfn

復元操作の進行状況に関する通知情報として呼び出される関数への省略可能なポインター。

戻り値

この関数は、次のいずれかのリターン コードを使用して 、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張可能ストレージ エンジン エラー 」および「 エラー処理パラメーター」を参照してください。

リターン コード

説明

JET_errSuccess

操作は正常に完了しました。

JET_errAlreadyInitialized

エンジンがこのインスタンスに対して既に初期化されているため、操作は失敗しました。

JET_errInvalidLogSequence

バックアップ セットと現在のログ パスからのログ ファイルのセットが一致しません。

JET_errInvalidParameter

指定されたパラメーターの 1 つに、予期しない値が含まれていたか、別のパラメーターの値と組み合わせると意味のない値が含まれていました。

JET_errInvalidPath

指定された一部のパス (バックアップ パス、宛先パス、インスタンスのログまたはシステム パス) が無効であるため、操作が失敗しました。

JET_errPageSizeMismatch

トランザクション ログ ファイルまたはトランザクション ログ ファイルに関連付けられているデータベースの作成に使用されるデータベース ページ サイズと一致しないデータベース ページ サイズ (JET_paramDatabasePageSizeJetSetSystemParameter を使用) を使用するようにエンジンが構成されているため、操作が失敗しました。

JET_errRunningInMultiInstanceMode

パラメーターが単一インスタンス モード (Windows 2000 互換モード) を暗黙的に指定し、エンジンが既にマルチインスタンス モードになっているため、操作は失敗しました。

成功すると、バックアップ セットのデータベース ファイルがその場所に復元され、データベースがクリーントランザクション整合性状態になるように復旧が実行されます。 バックアップ セットからログ ファイルを再生し、そのようなファイルが存在する場合はログ パスからログ ファイルを再生します。 この回復により、チェックポイント ファイル、トランザクション ログ ファイル、およびそれらのトランザクション ログ ファイルによって参照されるすべてのデータベースが変更されます。

失敗した場合、インスタンスは初期化されていない状態のままです。 トランザクション ログ ファイルと、それらのトランザクション ログ ファイルによって参照されるすべてのデータベースの状態は、復元を初期化してデータベースを回復しようとして変更された可能性があります。

解説

復旧プロセスでは、バックアップ中にインスタンスにアタッチされたデータベースが再構築され、変更がデータベース ファイルに保存されます。 結果は、トランザクション整合性のあるデータベースになります。 可能であれば、トランザクション ログで最新の変更が見つかるまで、バックアップが実行されてから行われた変更もデータベースに保存されます。 これは、バックアップが作成された後に生成されたトランザクション ログがトランザクション ログ ディレクトリにまだ存在する場合に可能です。 インスタンスに対して循環ログが有効になっている場合は、生成されたトランザクション ログが再利用されるため、バックアップの時点までに行われた変更を回復で保存できます。 いずれの場合も、データベースに対して再生するトランザクション ログ ファイルの数が多い場合、このプロセスにかなりの時間がかかる可能性があります。

そのインスタンスに対して JetInit が呼び出される前に、 インスタンスで JetRestore 関数を呼び出す必要があります。

復旧中に大量のデータベース ページとトランザクション ログが使用されるため、これらの関数によって返される可能性のある一連のエラーが発生する可能性があります。 このようなエラーは、Jet_errOutOfMemoryなどの一時的なリソース割り当てエラーから、JET_errReadVerifyFailure、JET_errLogFileCorrupt、JET_errBadPageLinkなどの物理的な破損を表すエラーまでです。 これらのエラーは、ほとんどの場合、ハードウェアの問題によって引き起こされるため、回避できません。 ファイルの管理ミスは、ほとんどの場合、JET_errMissingLogFile、JET_errAttachedDatabaseMismatch、JET_errDatabaseSharingViolation、またはJET_errInvalidLogSequenceとして現れます。 これらのエラーは、アプリケーションによって防止できます。 アプリケーションは、ユーザーや他のアプリケーションなどの外部の強制による操作からこれらのファイルのリポジトリを保護するように注意する必要があります。 アプリケーションでインスタンスを完全に破棄する場合は、インスタンスに関連付けられているすべてのファイルを削除する必要があります。 これには、チェックポイント ファイル、トランザクション ログ ファイル、およびインスタンスにアタッチされているデータベース ファイルが含まれます。

復旧のさまざまな手順では、トランザクション ログの再生の進行状況や復元の最終結果など、イベント ログ エントリが生成されます。

必要条件

要件

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

JetRestoreW (Unicode) および JetRestoreA (ANSI) として実装されます。

参照

JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter