次の方法で共有


JetOSSnapshotFreeze 関数

適用対象: Windows |Windows Server

JetOSSnapshotFreeze 関数

JetOSSnapshotFreeze 関数は、スナップショットを開始します。 スナップショットの進行中は、エンジンによるディスクへの書き込みアクティビティは実行できません。

Windows XP:JetOSSnapshotFreeze は Windows XP で導入されました。

    JET_ERR JET_API JetOSSnapshotFreeze(
      __in          const JET_OSSNAPID snapId,
      __out         unsigned long* pcInstanceInfo,
      __out         JET_INSTANCE_INFO** paInstanceInfo,
      __in          const JET_GRBIT grbit
    );

パラメーター

snapId

スナップショット セッションの識別子。

pcInstanceInfo

スナップショット セッションの一部であるエンジンで現在実行されているインスタンスの数。

paInstanceInfo

構造体の配列。スナップショット セッションの一部である実行中のインスタンスごとに 1 つ、インスタンスとその一部であるデータベースを記述します。

grbit

この呼び出しのオプション。 このパラメーターは将来使用するために予約されており、サポートされている有効な値は 0 のみです。

戻り値

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

リターン コード

説明

JET_errSuccess

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

JET_errInvalidParameter

出力パラメーターに指定されたポインターは NULL、スナップショット セッションが無効、または grbit パラメーターが無効です。

JET_errOSSnapshotInvalidSequence

スナップショット セッションは、フリーズを開始するための適切な状態ではありません (たとえば、以前のこのセッションでは、以前のフリーズが失敗しました)。

JET_errOSSnapshotNotAllowed

エンジンが、スナップショットを実行できる状態ではありません。 1 つ以上のストリーミング バックアップが既に進行中であるか、1 つ以上のインスタンスが復旧手順を実行するか、または終了しています。

JET_errOSSnapshotInvalidSnapId

スナップショット セッションの識別子が無効です。

JET_errOutOfMemory

メモリ不足の状態が原因で関数が失敗しました。

JET_errOutOfThreads

フリーズを実行している新しいスレッドが開始できなかったため、関数は失敗しました。

この関数が成功した場合、データベース ファイルまたは固定されているインスタンスの一部であるログ ファイルに対して書き込み IO は発行されません。 また、インスタンス情報は適切に入力され、後で JetFreeBuffer を呼び出し、返されたインスタンス情報配列へのポインターを使用して解放する必要があります。

この関数が失敗した場合、エンジンは正常に実行され続け、IO は通常どおり発生します。 フリーズが失敗した場合は 、JetOSSnapshotThaw を呼び出す必要はありません。 また、インスタンス情報は入力されないため、このリソースを解放する必要はありません。

解説

固定期間中は、アタッチされたデータベースまたはトランザクション ログに書き込み IO は発行されませんが、一時データベースまたはストリーミング ファイルに対して書き込み IO が発行される可能性があります。

凍結中にデータベースとログ ファイルが発生する状態 (ファイルがボリューム スナップショット イメージ内にある状態) は、後でこれらのファイルを復元した場合に通常の回復が可能になるようになります。

凍結期間中は書き込み操作がないため、エンジンへの通常の API 呼び出しがその間隔で停止する可能性があります。 クライアント アプリケーションは、フリーズが発生した場合に通常より長い時間がかかる可能性がある API 呼び出しを処理できる必要があります。

上記の影響が考えられるため、内部タイムアウトが発生し、その後、解凍または中止を実行している API が呼び出されなかった場合でも、スナップショット セッションによってフリーズ フェーズが停止されます。 タイムアウトの値は、 JET_paramOSSnapshotTimeout システム パラメーターを使用して変更できます。 一般的な固定間隔は 10 秒の範囲であり、既定のタイムアウトは約 60 秒であることに注意してください。

必要条件

要件

Client

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

[サーバー]

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

Header

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

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

Unicode

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

参照

JET_ERR
JET_INSTANCE_INFO
JET_OSSNAPID
JetOSSnapshotAbort
JetOSSnapshotPrepare
JetOSSnapshotPrepareInstance
JetOSSnapshotThaw