JetOpenTempTable2 関数
適用対象: Windows |Windows Server
JetOpenTempTable2 関数
JetOpenTempTable2 関数は、JetCreateTableColumnIndex を使用して作成された通常のテーブルと同様に、レコードの格納と取得に使用できる 1 つのインデックスを持つ一時テーブルを作成します。 この関数には、一時テーブル内の Unicode キー列データを比較するために使用できるロケール ID もあります。 ただし、一時テーブルは揮発性のため、通常のテーブルよりもはるかに高速です。 また、純粋にシーケンシャルな方法でアクセスした場合に、レコード セットに対して非常に迅速に並べ替え、重複除去を実行するためにも使用できます。
JET_ERR JET_API JetOpenTempTable2(
__in JET_SESID sesid,
__in const JET_COLUMNDEF* prgcolumndef,
__in unsigned long ccolumn,
__in unsigned long lcid,
__in JET_GRBIT grbit,
__out JET_TABLEID* ptableid,
__out JET_COLUMNID* prgcolumnid
);
パラメーター
sesid
使用するセッション。
prgcolumndef
一時テーブルに作成する列の列定義。
一時テーブルで使用される列定義オプションには、重要な制限事項があります。 詳細については、次の「解説」を参照してください。
通常の列定義オプションに加えて、一時テーブルのコンテキストでのみ関連する次のオプションを 0 個以上指定することもできます。
値 |
説明 |
---|---|
JET_bitColumnTTDescending |
一時テーブルのキー列の並べ替え順序は、昇順ではなく降順にする必要があります。 このオプションが JET_bitColumnTTKey なしで指定されている場合、このオプションは無視されます。 |
JET_bitColumnTTKey |
列は、一時テーブルのキー列になります。 入力配列でこのオプションを指定した列定義の順序によって、一時テーブルの各キー列の優先順位が決まります。 このオプションが設定された配列の最初の列定義は、最も重要なキー列になります。 データベース エンジンでサポートできるキー列よりも多くのキー列が要求される場合、サポートされていないキー列に対してこのオプションは無視されます。 |
ccolumn
「prgcolumndef」を参照してください。
lcid
一時テーブル内の Unicode キー列データを比較するために使用するロケール ID。
適切な言語パックがコンピューターにインストールされている限り、任意のロケールを使用できます。 1 つの例外は、Language Neutral ロケール (0 の LCID) が無効である点です。
Windows Server 2003 以降では、このパラメーターに言語ニュートラル ロケールが指定されている場合は、代わりに既定のロケール ID (米国英語) が使用されます。 これは、0 の値が無効な値ではなく既定値を示すことを許可するためです。
このパラメーターが存在せず、 pidxunicode パラメーターが存在しない場合は、一時テーブル内の Unicode キー列データを比較するために既定の LCID が使用されます。 既定の LCID は、米国英語ロケールです。
grbit
この呼び出しに使用するオプションを含むビットのグループ。これには、次の 0 個以上が含まれます。
値 |
説明 |
---|---|
JET_bitTTErrorOnDuplicateInsertion |
このオプションは、以前に挿入したレコードと同じインデックス キーを持つレコードを挿入しようとすると、JET_errKeyDuplicateですぐに失敗することを要求します。 このオプションが要求されていない場合は、要求された機能に基づいて一時テーブルを実装するためにデータベース エンジンによって選択された戦略に応じて、重複がすぐに検出され、失敗したり、後でサイレントに削除されたりする可能性があります。 この機能が不要な場合は、要求しないことをお勧めします。 この機能が要求されない場合、一時テーブル マネージャーは、パフォーマンスの向上につながる一時テーブルを管理するための戦略を選択できる場合があります。 |
JET_bitTTForceMaterialization |
このオプションにより、一時テーブル マネージャーは、パフォーマンスが向上する一時テーブルを管理するための巧妙な戦略を選択しようとする試みを強制的に中止します。 |
JET_bitTTForwardOnly |
このオプションは、一時テーブル マネージャーが中間クエリ結果用に最適化された実装を使用できる場合にのみ、一時テーブルを作成することを要求します。 一時テーブルの特性によってこの最適化の使用が妨げられる場合、操作はJET_errCannotMaterializeForwardOnlySortで失敗します。 このオプションの副作用は、一時テーブルに重複するインデックス キーを持つレコードを含めることができるようにすることです。 詳細については、「JET_bitTTUnique」を参照してください。 このオプションは、Windows Server 2003 以降のリリースでのみ使用できます。 |
JET_bitTTIndexed |
このオプションでは、 JetSeek を使用してインデックス キーでレコードを検索できるように、一時テーブルに十分な柔軟性を要求します。 この機能が不要な場合は、要求しないことをお勧めします。 この機能が要求されない場合、一時テーブル マネージャーは、パフォーマンスの向上につながる一時テーブルを管理するための戦略を選択できる場合があります。 |
JET_bitTTScrollable |
このオプションでは、 JetMove を使用してレコードを任意の順序と方向でスキャンできるように、一時テーブルに十分な柔軟性を要求します。 この機能が不要な場合は、要求しないことをお勧めします。 この機能が要求されない場合、一時テーブル マネージャーは、パフォーマンスの向上につながる一時テーブルを管理するための戦略を選択できる場合があります。 |
JET_bitTTSortNullsHigh |
このオプションは、NULL 以外のキー列値よりもインデックスの末尾に近い位置に NULL キー列の値を並べ替えるよう要求します。 |
JET_bitTTUnique |
このオプションは、重複するインデックス キーを持つレコードを、一時テーブル内のレコードの最後のセットから削除することを要求します。 Windows Server 2003 より前のバージョンでは、すべてのクラスター化インデックスも主キーである必要があり、したがって一意である必要があるため、データベース エンジンは常にこのオプションが有効であると想定しました。 Windows Server 2003 の時点で、JET_bitTTForwardOnly オプションも指定されている場合に重複を削除しない一時テーブルを作成できるようになりました。 どの重複が勝つか、どの重複が一般的に破棄されるかを知ることはできません。 ただし、JET_bitTTErrorOnDuplicateInsertion オプションが要求されると、一時テーブルに挿入する特定のインデックス キーを持つ最初のレコードが常に優先されます。 |
JET_bitTTUpdatable |
このオプションは、以前に挿入されたレコードを後で変更できるように、一時テーブルに十分な柔軟性を持たせるように要求します。 この機能が不要な場合は、要求しないことをお勧めします。 この機能が要求されない場合、一時テーブル マネージャーは、パフォーマンスの向上につながる一時テーブルを管理するための戦略を選択できる場合があります。 |
JET_bitTTIntrinsicLVsOnly |
組み込みの長い値のみを許可するように要求します。 Windows 7: JET_bitTTIntrinsicLVsOnly は Windows 7 で導入されています。 |
ptableid
新しく作成された一時テーブルで開かれた新しいカーソルを受け取る出力バッファー。
prgcolumnid
一時テーブルの作成時に生成された列 ID の配列を受け取る出力バッファー。
この配列内の列 ID は、列定義の入力配列に正確に対応します。 その結果、このバッファーのサイズは入力配列のサイズに対応している必要があります。
戻り値
この関数は、次のいずれかの戻りコードを 使用して、JET_ERR データ型を返します。 考えられる ESE エラーの詳細については、「 拡張ストレージ エンジン エラー と エラー処理パラメーター」を参照してください。
リターン コード |
説明 |
---|---|
JET_errSuccess |
操作は正常に完了しました。 |
JET_errCannotMaterializeForwardOnlySort |
jetOpenTempTable2 が失敗しました。JET_bitTTForwardOnlyが指定されており、指定した一時テーブルを前方専用最適化を使用して作成できなかったためです。 このエラーは、Windows Server 2003 以降のリリースでのみ返されます。 |
JET_errClientRequestToStopJetService |
JetStopService の呼び出しの結果、セッションに関連付けられたインスタンスのすべてのアクティビティが停止したため、操作を完了できません。 |
JET_errInstanceUnavailable |
セッションに関連付けられているインスタンスで、そのデータの整合性を保護するためにすべてのデータへのアクセスを取り消す必要がある致命的なエラーが発生したため、操作を完了できません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errInvalidCodePage |
JET_COLUMNDEFの cp フィールドが有効なコード ページに設定されていません。 テキスト列の有効な値は、英語 (1252) と Unicode (1200) のみです。 値 0 は、既定値 (英語、1252) が使用されることを意味します。 |
JET_errInvalidColumnType |
JET_COLUMNDEFの coltyp フィールドが有効な列型に設定されていません。 |
JET_errIndexInvalidDef |
無効なインデックス定義が指定されたため、インデックスを作成できませんでした。 JetOpenTempTable2 は、次の場合にこのエラーを返します。
このエラーは、Windows 2000 によってのみ返されます。 |
JET_errInvalidLanguageId |
無効なロケール ID を使用しようとしたため、インデックスを作成できませんでした。 ロケール ID が完全に無効であるか、関連付けられている言語パックがインストールされていない可能性があります。 |
JET_errInvalidLCMapStringFlags |
無効な正規化フラグのセットを使用しようとしたため、インデックスを作成できませんでした。 このエラーは、Windows XP 以降のリリースでのみ返されます。 Windows 2000 では、無効な正規化フラグが代わりにJET_errIndexInvalidDefされます。 |
JET_errNotInitialized |
セッションに関連付けられているインスタンスがまだ初期化されていないため、操作を完了できません。 |
JET_errOutOfCursors |
エンジンが新しいカーソルを開くために必要なリソースを割り当てることができないため、操作が失敗しました。 カーソル リソースは、JET_paramMaxCursorsで JetSetSystemParameter を使用して構成されます。 |
JET_errOutOfMemory |
完了するのに十分なメモリを割り当てられなかったため、操作は失敗しました。 ホスト プロセスのアドレス空間が断片化しすぎると、JetOpenTempTable2 はJET_errOutOfMemoryを返すことができます。 一時テーブル マネージャーは、格納するデータの量に関係なく、作成されるすべての一時テーブルに対して常に 1 MB のアドレス空間チャンクを割り当てます。 |
JET_errRestoreInProgress |
セッションに関連付けられているインスタンスで復元操作が進行中のため、操作を完了できません。 |
JET_errSessionSharingViolation |
同じセッションを複数のスレッドに同時に使用することはできません。 このエラーは、Windows XP 以降のリリースでのみ返されます。 |
JET_errTermInProgress |
セッションに関連付けられているインスタンスがシャットダウンされているため、操作を完了できません。 |
JET_errTooManyColumns |
テーブルに列を追加しようとしました。 テーブルには、固定列JET_ccolFixedMost以下、可変長列JET_ccolVarMost以下、およびタグ付き列JET_ccolTaggedMost以下を含めることができます。 |
JET_errTooManyOpenIndexes |
エンジンがテーブルのインデックスをキャッシュするために必要なリソースを割り当てることができないため、操作に失敗しました。 スキーマをキャッシュできるインデックスの数は、JET_paramMaxOpenTablesで JetSetSystemParameter を使用して構成されます。 |
JET_errTooManyOpenTables |
エンジンがテーブルのスキーマをキャッシュするために必要なリソースを割り当てることができないため、操作が失敗しました。 スキーマをキャッシュできるテーブルの数は、JET_paramMaxOpenTablesで JetSetSystemParameter を使用して構成されます。 |
JET_errTooManySorts |
エンジンが一時テーブルの作成に必要なリソースを割り当てることができないため、操作に失敗しました。 一時テーブル リソースは、JET_paramMaxTemporaryTablesで JetSetSystemParameter を使用して構成されます。 |
成功すると、新しく作成された一時テーブルで開かれたカーソルが返されます。 一時データベースの状態は、新しい一時テーブルを格納するように準備されます。 データベース エンジンで使用されている通常のデータベースの状態は変更されません。
失敗した場合、一時テーブルは作成されず、カーソルは返されません。 一時データベースの状態は変更される可能性があります。 データベース エンジンで使用されている通常のデータベースの状態は変更されません。
解説
必要条件
要件 | 値 |
---|---|
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_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
システム パラメーター