次の方法で共有


JetCreateInstance 関数

適用対象: Windows |Windows Server

JetCreateInstance 関数

JetCreateInstance 関数は、データベース エンジンの新しいインスタンスを 1 つのプロセスで使用するために割り当てます。

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

    JET_ERR JET_API JetCreateInstance(
      __out         JET_INSTANCE* pinstance,
      __in_opt      const tchar* szInstanceName
    );

パラメーター

pinstance

新しく作成されたインスタンスを受け取る出力バッファー。

szInstanceName

作成するインスタンスの一意の文字列識別子。 この文字列は、データベース エンジンをホストする特定のプロセス内で一意である必要があります。

メモ NULL 値は、インスタンスの有効な文字列識別子として扱われます。 NULL 文字列識別子を持つインスタンスは 1 つだけです。

戻り値

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

リターン コード

説明

JET_errSuccess

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

JET_errInstanceNameInUse

指定したインスタンス名は、このプロセスで既に使用されています。

JET_errInvalidParameter

指定されたパラメーターの 1 つに予期しない値が含まれていたか、別のパラメーターの値と組み合わせたときに意味のない値が含まれていました。 これは、Pinstance が NULL の場合に JetCreateInstance で発生する可能性があります

JET_errRunningInOneInstanceMode

データベース エンジンがシングル インスタンス モード (Windows 2000 互換モード) で動作している場合に使用できないため、操作が失敗しました。

JET_errTooManyInstances

インスタンスの最大数に達したため、新しいインスタンスを作成できませんでした。 サポートされているインスタンスの最大数は、JET_paramMaxInstancesを使用して JetSetSystemParameter を使用して構成されます。

成功すると、新しいインスタンスが割り当てられ、その識別子が返されます。 この時点で、インスタンスのすべてのシステム パラメーターには、グローバルな既定のシステム パラメーターの値が含まれます。 インスタンスが割り当てられると、後で終了または解放される必要があります。

失敗した場合、エラーの原因を表すエラーが返され、インスタンスは割り当てされません。

解説

JetSetSystemParameter 以外で使用するには、インスタンスを JetInit の呼び出しで初期化する必要があります。

インスタンスが JetInit を使用して初期化されていなくても、JetTerm 関数の呼び出しによってインスタンスが破棄されます。 一度に作成できるインスタンスの最大数は、JetSetSystemParameter の呼び出しによって構成できるJET_paramMaxInstancesによって制御されます。 インスタンスは、データベース エンジンの回復性の単位です。 一連のデータベース ファイル内のデータの整合性を保護するために使用されるすべてのファイルのライフ サイクルを制御します。 これらのファイルには、チェックポイント ファイルとトランザクション ログ ファイルが含まれます。

関数が成功すると、この呼び出しの副作用として、データベース エンジンが自動的にマルチインスタンス モードに変更されます。 アプリケーションでプロセス内のインスタンスを 1 つだけ許可する場合は 、JetInit を使用して Windows 2000 互換モードでデータベース エンジンを起動する必要があります。

存在する場合、 szDisplayName は、イベント ログなどの場所、またはバックアップ アプリケーションなどの他の呼び出し元 ( JetGetInstanceInfoJetOSSnapshotFreeze などの関数を使用) でインスタンスを識別するために使用されます。 表示名が指定されていない場合は、一意 の szInstanceName が代わりに使用されます (存在する場合)、それ以外の場合は空の文字列が返されます。 エンジンに実行モードが設定されていない場合は、この呼び出しの後にマルチインスタンス モードに設定されます。

複数の Jet インスタンスを実行する可能性があるプロセスの一般的なスタートアップ シーケンスは次のようになります。

  • インスタンスを割り当てて名前を付ける JetCreateInstance2 の呼び出し。

  • 異なるシステム パラメーターを設定するために、そのインスタンスに対して JetSetSystemParameter を複数回呼び出します。 一部のシステム パラメーターはインスタンスごとに一意である必要があるため ( JET_paramSystemPathJET_paramLogFilePathなど)、ほとんどの場合、それぞれを設定する必要があります。

  • JetInit または JetInit2 を使用してインスタンス起動します。 インスタンスを終了または解放するには、JetTerm、JetTerm2使用する必要があります。

これが最初に開始されるインスタンスの場合は、基本的なシステムの初期化と構成を行うために、この呼び出し中に実行される追加の手順がいくつかあります。 これらの手順の多くでは、JET_errOutOfMemory以降の特定のエラーが発生する可能性がありますが、他のエラーも発生する可能性があります (上記のエラーを参照してください)。

必要条件

要件

Client

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

[サーバー]

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

Header

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

Library

ESENT.lib を使用します。

[DLL]

ESENT.dllが必要です。

Unicode

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

参照

拡張可能なストレージ エンジン ファイル
JET_ERR
JET_INSTANCE
JetCreateInstance2
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2