次の方法で共有


JetRestoreInstance 関数

適用対象: Windows |Windows Server

JetRestoreInstance 関数

JetRestoreInstance 関数は、アタッチされているすべてのデータベースを含むインスタンスのストリーミング バックアップを復元および回復します。 JetBackupInstance 関数を使用して作成されたバックアップを操作するように設計されています。 これは、最も単純で最もカプセル化された 1 つの復元関数です。

Windows XP:JetRestoreInstance は Windows XP で導入されています。

    JET_ERR JET_API JetRestoreInstance(
      __in          JET_INSTANCE instance,
      __in          JET_PCSTR sz,
      __in_opt      JET_PCSTR szDest,
      __in          JET_PFNSTATUS pfn
    );

パラメーター

instance

この呼び出しに使用するインスタンスを指定します。

Windows XP 以降のリリースでは、このパラメーターの使用はエンジンの動作モードによって異なります。 1 つのインスタンスのみがサポートされているレガシ モード (Windows 2000 互換モード) でエンジンが動作している場合、このパラメーターは NULL であるか、初期化の副作用として作成されたグローバル インスタンス ハンドルを返す NULL またはJET_instanceNilを含む有効な出力バッファーに設定できます。 このインスタンス ハンドルは、インスタンスを受け取る他の API に渡すことができます。 エンジンがマルチインスタンス モードで動作している場合、このパラメーターは、初期化中の JetCreateInstance によって返されるインスタンス ハンドルを含む有効な入力バッファーに設定する必要があります。

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 互換モード) を暗黙的に指定し、エンジンが既にマルチインスタンス モードになっているため、操作が失敗しました。

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

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

解説

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

JetRestoreInstance は、 JetCreateInstance を使用して既に作成されたインスタンスで呼び出す必要があります。

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

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

要件

要件

Client

Windows Vista または Windows XP が必要です。

[サーバー]

Windows Server 2008 または Windows Server 2003 が必要です。

Header

Esent.h で宣言されています。

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

Unicode

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

参照

JET_ERR
JET_GRBIT
JET_INSTANCE
JetBackup
JetBackupInstance
JetCreateInstance
JetSetSystemParameter