次の方法で共有


JetRestore2 関数

適用対象: Windows |Windows Server

JetRestore2 関数

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

    JET_ERR JET_API JetRestore2(
      __in          JET_PCSTR sz,
      __in_opt      JET_PCSTR szDest,
      __in          JET_PFNSTATUS pfn
    );

パラメーター

Sz

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

szDest

バックアップ セットのデータベース ファイルがコピーおよび回復されるフォルダーの名前。 これが NULL に設定されている場合 (従来の JetRestore の場合)、データベース ファイルがコピーされ、元の場所に復元されます。

pfn

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

戻り値

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

リターン コード

説明

JET_errSuccess

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

JET_errAlreadyInitialized

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

JET_errInvalidLogSequence

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

JET_errInvalidParameter

指定されたパラメーターの 1 つに予期しない値が含まれていたか、別のパラメーターの値と組み合わせたときに意味のない値が含まれていました。 このエラーは、エンジンがマルチインスタンス モードで、ピンスタンスが無効なインスタンス Windows XP 以降のリリースを参照している場合に 、JetRestoreInstance によって返されます。

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

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

参照

JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetInit
JetRestore
JetRestoreInstance
JetSetSystemParameter