次の方法で共有


JetCreateInstance2 関数

適用対象: Windows |Windows Server

JetCreateInstance2 関数

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

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

    JET_ERR JET_API JetCreateInstance2(
      __out         JET_INSTANCE* pinstance,
      __in_opt      const tchar* szInstanceName,
      __in_opt      const tchar* szDisplayName,
      __in          JET_GRBIT grbit
    );

パラメーター

pinstance

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

szInstanceName

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

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

szDisplayName

作成するインスタンスの表示名。 このパラメーターが存在しない場合、その値は NULL と見なされます。

grbit

将来利用するために予約されています。 このパラメーターが存在しない場合、その値は 0 と見なされます。

戻り値

この関数は、次のいずれかの戻りコードを 使用して、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

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

参照

JET_ERR
JET_INSTANCE
JetCreateInstance
JetEnableMultiInstance
JetGetInstanceInfo
JetInit
JetInit2
JetOSSnapshotFreeze
JetSetSystemParameter
JetTerm
JetTerm2