JetInit 関数
適用対象: Windows |Windows Server
JetInit 関数
JetInit 関数を使用すると、データベース エンジンはデータベース ファイルのアプリケーション使用をサポートできる状態になります。 エンジンは、 JetSetSystemParameter を使用した初期化用に既に適切に構成されている必要があります。 データベース クラッシュ復旧は、初期化プロセスの一環として自動的に実行されます。
JET_ERR JET_API JetInit(
__in_out_opt JET_INSTANCE* pinstance
);
パラメーター
pinstance
この呼び出しに使用するインスタンス。
Windows 2000 の場合、このパラメーターは無視され、常に NULL である必要があります。
Windows XP 以降のリリースでは、このパラメーターの使用はエンジンの動作モードによって異なります。 1 つのインスタンスのみがサポートされているレガシ モード (Windows 2000 互換モード) でエンジンが動作している場合、このパラメーターは NULL であるか、初期化の副作用として作成されたグローバル インスタンス ハンドルを返す有効な出力バッファーに設定できます。 この出力バッファーは NULL またはJET_instanceNilに設定する必要があります。 このインスタンス ハンドルは、インスタンスを使用する他の関数に渡すことができます。 エンジンがマルチインスタンス モードで動作している場合、このパラメーターは、初期化中の JetCreateInstance 関数インスタンスによって返されるインスタンス ハンドルを含む有効な入力バッファーに設定する必要があります。
解説
JetSetSystemParameter 以外で使用するには、インスタンスを JetInit の呼び出しで初期化する必要があります。
インスタンスが JetInit を使用して初期化されていなくても、JetTerm 関数の呼び出しによってインスタンスが破棄されます。 インスタンスは、データベース エンジンの回復可能性の単位です。 データベース ファイルのセット内のデータの整合性を保護するために使用されるすべてのファイルのライフ サイクルを制御します。 これらのファイルには、チェックポイント ファイルとトランザクション ログ ファイルが含まれます。
一度に作成できるインスタンスの最大数は、JetSetSystemParameter の呼び出しによって構成できるJET_paramMaxInstancesによって制御されます。 データベース エンジンが初めて初期化されると、 JetInit によって、そのインスタンスをサポートするファイルの初期セットが作成されます。 これらのファイルには、チェックポイント ファイル (JET_paramBaseNameという名前<が含まれます>。CHK)、予約済みトランザクション ログ ファイルのセット (RES1 という名前)。LOG と RES2。LOG)、最初のトランザクション ログ ファイル (JET_paramBaseName>という名前<です。LOG)、および一時データベース ファイル (JET_paramTempPathに従って名前が付けられます)。 JET_paramRecoveryが "オフ" に設定されている場合、チェックポイント ファイルとログ ファイルは作成されません。 JET_paramMaxTemporaryTablesが 0 に設定されている場合、一時データベース ファイルは作成されません。 これらのファイルは、インスタンスのディスクフットプリント上の を表し、注意して管理する必要があります。 これらのファイルが個別に、または相互に破損している場合、インスタンスに関連付けられているデータベースに格納されているデータが失われる可能性があります。
データベース エンジンが既存のトランザクション ログ ファイルセットで初期化されると、それらのファイルが検査され、インスタンスの以前の化身がクラッシュしたかどうかを確認します。 クラッシュが検出されると、クラッシュ復旧が自動的に実行されます。 このプロセスにより、エンジンの以前の化身の間にインスタンスにアタッチされたデータベースが再構築され、変更がデータベース ファイルに保存されます。 結果は、トランザクション整合性のあるデータベースになります。 データベースに対して再生するトランザクション ログ ファイルの数が多い場合、このプロセスにかなりの時間がかかる可能性があります。
JetInit がクラッシュ復旧を実行するため、障害が発生した場合にほぼすべてのデータベース エンジン エラーが返される可能性があります。 実際には、デプロイで見られるエラーのほとんどは、データの破損とファイルの管理の誤りという 2 つのカテゴリに分類されます。 データの破損は、次のようなエラーで最も頻繁に現れます。
JET_errReadVerifyFailure
JET_errLogFileCorrupt
JET_errCheckpointCorrupt
これらのエラーは、ほとんどの場合、ハードウェアの問題によって引き起こされるため、回避できません。 ファイルの管理ミスは、次のようなエラーで最も頻繁に現れます。
JET_errMissingLogFile
JET_errAttachedDatabaseMismatch
JET_errDatabaseSharingViolation
JET_errInvalidLogSequence
すべてのデータベースが存在しない一連のログ (通常の状況ではエラー JET_errAttachedDatabaseMismatchを返す) で復旧が実行されていて、データベースが見つからない場合でもクライアントが復旧を続行したい場合は、JET_ bitReplayIgnoreMissingDB を使用して、使用可能なデータベースの回復を続行できます。 これらのエラーは、アプリケーションによって防止できます。 アプリケーションは、ユーザーや他のアプリケーションなどの外部の強制による操作からこれらのファイルのリポジトリを保護するように注意する必要があります。 アプリケーションでインスタンスを完全に破棄する場合は、インスタンスに関連付けられているすべてのファイルを削除する必要があります。 これには、チェックポイント ファイル、トランザクション ログ ファイル、およびインスタンスにアタッチされているデータベース ファイルが含まれます。
JetInit 関数は、Windows 2000 以降のリリース間で、インスタンスにアタッチされているデータベース ファイルに関して異なる動作をします。
Windows 2000: Windows 2000 では、 JetInit が正常に完了した後も、そのインスタンスの以前のインカーネーション中にインスタンスにアタッチされたデータベースは、インスタンスにアタッチされたままになります。 JetInit の後で JetAttachDatabase を呼び出して、後のデータベース アクセスを保証する必要はありません。 JetInit 関数の後に JetAttachDatabase 関数を呼び出すと、JET_wrnDatabaseAttached警告が返されます。 この警告は、データベースの添付ファイルが保持され、無視できることを示します。
Windows XP: Windows XP 以降のリリースでは、すべてのデータベースが JetInit によってインスタンスから自動的にデタッチされます。 つまり、この場合、 JetAttachDatabase は常に JetInit の後に呼び出す必要があります。
Windows 2000 以降のリリースで実行するように作成されたアプリケーションは、JetInit の後に常に JetAttachDatabase を呼び出す必要があります。 アプリケーションが Windows 2000 で実行されている場合は、場合によってはJET_wrnDatabaseAttachedが表示されることを想定する必要があります。 詳細については、「 JetAttachDatabase 」を参照してください。
必要条件
要件 | 値 |
---|---|
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が必要です。 |
参照
拡張可能なストレージ エンジン ファイル
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter