Fungsi JetOpenTempTable3

Berlaku untuk: Windows | Windows Server

Fungsi JetOpenTempTable3

Fungsi JetOpenTempTable3 membuat tabel sementara dengan satu indeks yang dapat digunakan untuk menyimpan dan mengambil rekaman seperti tabel biasa yang dibuat menggunakan JetCreateTableColumnIndex. Namun, tabel sementara jauh lebih cepat daripada tabel biasa karena sifatnya yang volatil. Mereka juga dapat digunakan untuk mengurutkan dengan sangat cepat dan melakukan penghapusan duplikat pada kumpulan catatan ketika diakses secara murni berurutan.

    JET_ERR JET_API JetOpenTempTable3(
      __in          JET_SESID sesid,
      __in          const JET_COLUMNDEF* prgcolumndef,
      __in          unsigned long ccolumn,
      __in_opt      JET_UNICODEINDEX* pidxunicode,
      __in          JET_GRBIT grbit,
      __out         JET_TABLEID* ptableid,
      __out         JET_COLUMNID* prgcolumnid
    );

Parameter

sesid

Sesi yang digunakan untuk panggilan ini.

prgcolumndef

Mengidentifikasi definisi kolom kolom yang akan dibuat dalam tabel sementara.

Batasan penting ada pada opsi definisi kolom yang dapat digunakan dengan tabel sementara. Lihat bagian Keterangan untuk informasi selengkapnya.

Selain opsi definisi kolom biasa, nol atau beberapa opsi berikut juga dapat ditentukan yang hanya relevan dalam konteks tabel sementara.

Nilai

Makna

JET_bitColumnTTDescending

Opsi ini menunjukkan bahwa urutan pengurutan kolom kunci untuk tabel sementara harus turun daripada naik. Jika opsi ini ditentukan tanpa JET_bitColumnTTKey maka opsi ini diabaikan.

JET_bitColumnTTKey

Opsi ini menunjukkan bahwa kolom akan menjadi kolom kunci untuk tabel sementara.

Urutan definisi kolom dengan opsi ini yang ditentukan dalam array input akan menentukan prioritas setiap kolom kunci untuk tabel sementara. Definisi kolom pertama dalam array dengan set opsi ini akan menjadi kolom kunci yang paling signifikan dan sebagainya. Jika lebih banyak kolom kunci diminta daripada yang dapat didukung oleh mesin database, maka opsi ini diabaikan untuk kolom kunci yang tidak didukung.

ccolumn

Lihat prgcolumndef.

pidxunicode

ID Lokal dan bendera normalisasi yang akan digunakan untuk membandingkan data kolom kunci Unicode dalam tabel sementara.

Ketika parameter ini tidak ada, maka LCID default akan digunakan untuk membandingkan kolom kunci Unicode apa pun dalam tabel sementara. LCID default adalah lokal Inggris A.S.

Ketika parameter ini tidak ada maka bendera normalisasi default akan digunakan untuk membandingkan data kolom kunci Unicode dalam tabel sementara. Bendera normalisasi default adalah: NORM_IGNORECASE, NORM_IGNOREKANATYPE, dan NORM_IGNOREWIDTH.

grbit

Sekelompok bit yang berisi opsi yang akan digunakan untuk panggilan ini, yang mencakup nol atau beberapa hal berikut ini.

Nilai

Makna

JET_bitTTErrorOnDuplicateInsertion

Opsi ini meminta agar setiap upaya untuk menyisipkan rekaman dengan kunci indeks yang sama dengan rekaman yang disisipkan sebelumnya akan segera gagal dengan JET_errKeyDuplicate. Jika opsi ini tidak diminta maka duplikat dapat segera terdeteksi dan gagal atau mungkin dihapus secara diam-diam nanti tergantung pada strategi yang dipilih oleh mesin database untuk mengimplementasikan tabel sementara berdasarkan fungsionalitas yang diminta.

Jika fungsionalitas ini tidak diperlukan maka yang terbaik adalah tidak memintanya. Jika fungsionalitas ini tidak diminta, manajer tabel sementara mungkin dapat memilih strategi untuk mengelola tabel sementara yang akan menghasilkan peningkatan performa.

JET_bitTTForceMaterialization

Opsi ini memaksa manajer tabel sementara untuk meninggalkan upaya apa pun untuk memilih strategi cerdas untuk mengelola tabel sementara yang akan menghasilkan peningkatan performa.

JET_bitTTForwardOnly

Opsi ini meminta agar tabel sementara hanya dibuat jika manajer tabel sementara dapat menggunakan implementasi yang dioptimalkan untuk hasil kueri menengah. Jika ada karakteristik tabel sementara yang akan mencegah penggunaan pengoptimalan ini maka operasi akan gagal dengan JET_errCannotMaterializeForwardOnlySort.

Efek samping dari opsi ini adalah memungkinkan tabel sementara berisi rekaman dengan kunci indeks duplikat. Lihat JET_bitTTUnique untuk informasi selengkapnya.

Opsi ini hanya tersedia pada rilis Windows Server 2003 dan yang lebih baru.

JET_bitTTIndexed

Opsi ini meminta agar tabel sementara cukup fleksibel untuk mengizinkan penggunaan JetSeek untuk mencari rekaman berdasarkan kunci indeks.

Jika fungsionalitas ini tidak diperlukan maka yang terbaik adalah tidak memintanya. Jika fungsionalitas ini tidak diminta, manajer tabel sementara mungkin dapat memilih strategi untuk mengelola tabel sementara yang akan menghasilkan peningkatan performa.

JET_bitTTUnique

Opsi ini meminta agar rekaman dengan kunci indeks duplikat dihapus dari kumpulan rekaman akhir dalam tabel sementara.

Sebelum Windows Server 2003, mesin database selalu mengasumsikan opsi ini berlaku karena fakta bahwa semua indeks berkluster juga harus menjadi kunci utama dan dengan demikian harus unik. Pada Windows Server 2003, sekarang dimungkinkan untuk membuat tabel sementara yang TIDAK menghapus duplikat ketika opsi JET_bitTTForwardOnly juga ditentukan.

Tidak mungkin untuk mengetahui duplikat mana yang akan menang dan duplikat mana yang akan dibuang secara umum. Namun, ketika opsi JET_bitTTErrorOnDuplicateInsertion diminta maka rekaman pertama dengan kunci indeks tertentu untuk dimasukkan ke dalam tabel sementara akan selalu menang.

JET_bitTTUpdatable

Opsi ini meminta agar tabel sementara cukup fleksibel untuk memungkinkan rekaman yang sebelumnya telah disisipkan untuk diubah. Jika fungsionalitas ini tidak diperlukan maka yang terbaik adalah tidak memintanya.

Jika fungsionalitas ini tidak diminta, manajer tabel sementara mungkin dapat memilih strategi untuk mengelola tabel sementara yang akan menghasilkan peningkatan performa.

JET_bitTTScrollable

Opsi ini meminta agar tabel sementara cukup fleksibel untuk memungkinkan rekaman dipindai dalam urutan dan arah arbitrer menggunakan JetMove.

Jika fungsionalitas ini tidak diperlukan maka yang terbaik adalah tidak memintanya. Jika fungsionalitas ini tidak diminta, manajer tabel sementara mungkin dapat memilih strategi untuk mengelola tabel sementara yang akan menghasilkan peningkatan performa.

JET_bitTTSortNullsHigh

Opsi ini meminta agar nilai kolom kunci NULL diurutkan lebih dekat ke akhir indeks daripada nilai kolom kunci non-NULL.

JET_bitTTIntrinsicLVsOnly

Permintaan untuk mengizinkan hanya nilai panjang intrinsik.

Windows 7: JET_bitTTIntrinsicLVsOnly diperkenalkan di Windows 7.

ptableid

Buffer output yang akan menerima kursor baru yang dibuka pada tabel sementara yang baru dibuat.

prgcolumnid

Buffer output yang akan menerima array ID kolom yang dihasilkan selama pembuatan tabel sementara.

ID kolom dalam array ini akan sama persis dengan array input definisi kolom. Akibatnya, ukuran buffer ini harus sesuai dengan ukuran array input.

Tampilkan Nilai

Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.

Menampilkan kode

Deskripsi

JET_errSuccess

Operasi berhasil diselesaikan.

JET_errCannotMaterializeForwardOnlySort

JetOpenTempTable3 gagal karena JET_bitTTForwardOnly ditentukan dan tabel sementara seperti yang ditentukan tidak dapat dibuat menggunakan pengoptimalan maju-saja. Kesalahan ini hanya akan dikembalikan oleh Windows Server 2003 dan rilis yang lebih baru.

JET_errClientRequestToStopJetService

Tidak mungkin untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService.

JET_errIndexInvalidDef

Indeks tidak dapat dibuat karena definisi indeks tidak valid ditentukan. JetOpenTempTable3 akan mengembalikan kesalahan ini ketika:

  • Lokal Netral Bahasa ditentukan.

  • Sekumpulan bendera normalisasi yang tidak valid ditentukan.

Kesalahan ini hanya akan dikembalikan oleh Windows 2000.

JET_errInstanceUnavailable

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi telah mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru.

JET_errInvalidCodePage

Anggota cp dari struktur JET_COLUMNDEF tidak diatur ke halaman kode yang valid. Satu-satunya nilai yang valid untuk kolom teks adalah Bahasa Inggris (1252) dan Unicode (1200). Nilai 0 berarti default akan digunakan (Inggris, 1252).

JET_errInvalidColumnType

Anggota coltyp dari struktur JET_COLUMNDEF tidak diatur ke jenis kolom yang valid.

JET_errInvalidLanguageId

Indeks tidak dapat dibuat karena upaya dilakukan untuk menggunakan ID lokal yang tidak valid. ID lokal mungkin benar-benar tidak valid atau paket bahasa terkait mungkin tidak diinstal.

JET_errInvalidLCMapStringFlags

Indeks tidak dapat dibuat karena upaya dilakukan untuk menggunakan set bendera normalisasi yang tidak valid. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. Pada Windows 2000, bendera normalisasi yang tidak valid akan menghasilkan JET_errIndexInvalidDef sebagai gantinya.

JET_errInvalidSesid

Handel sesi tidak valid atau mengacu pada sesi tertutup. Kesalahan ini tidak dikembalikan dalam semua keadaan. Handel divalidasi hanya berdasarkan upaya terbaik.

JET_errNotInitialized

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi.

JET_errOutOfCursors

Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk membuka kursor baru. Sumber daya kursor dikonfigurasi menggunakan JetSetSystemParameter dengan JET_paramMaxCursors.

JET_errOutOfMemory

Operasi gagal karena memori tidak cukup dapat dialokasikan untuk menyelesaikannya.

JetOpenTempTable3 dapat mengembalikan JET_errOutOfMemory jika ruang alamat proses host menjadi terlalu terfragmentasi. Manajer tabel sementara akan selalu mengalokasikan potongan ruang alamat 1MB untuk setiap tabel sementara yang dibuat terlepas dari jumlah data yang akan disimpan.

JET_errRestoreInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi.

JET_errSessionSharingViolation

Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan.

Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru.

JET_errTermInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan.

JET_errTooManyColumns

Upaya dilakukan untuk menambahkan terlalu banyak kolom ke tabel. Tabel tidak boleh memiliki lebih dari JET_ccolFixedMost kolom tetap, tidak lebih dari JET_ccolVarMost kolom panjang variabel, dan tidak lebih dari kolom yang diberi tag JET_ccolTaggedMost.

JET_errTooManyOpenIndexes

Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk menyimpan indeks tabel. Jumlah indeks yang skemanya dapat di-cache dikonfigurasi menggunakan JetSetSystemParameter dengan JET_paramMaxOpenTables.

JET_errTooManyOpenTables

Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk menyimpan skema tabel. Jumlah tabel yang skemanya dapat di-cache dikonfigurasi menggunakan JetSetSystemParameter dengan JET_paramMaxOpenTables.

JET_errTooManySorts

Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk membuat tabel sementara. Sumber daya tabel sementara dikonfigurasi menggunakan JetSetSystemParameter dengan JET_paramMaxTemporaryTables.

Jika berhasil, kursor yang dibuka pada tabel sementara yang baru dibuat akan dikembalikan. Status database sementara akan disiapkan untuk memuat tabel sementara baru. Status database biasa apa pun yang digunakan oleh mesin database akan tetap tidak berubah.

Jika gagal, tabel sementara tidak akan dibuat dan kursor tidak akan dikembalikan. Status database sementara dapat diubah. Status database biasa apa pun yang digunakan oleh mesin database akan tetap tidak berubah.

Persyaratan

Persyaratan Nilai

Klien

Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional.

Server

Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server.

Header

Dinyatakan dalam Esent.h.

Pustaka

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Lihat juga

Kesalahan Mesin Penyimpanan yang Dapat Diperluas
Parameter Penanganan Kesalahan
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetOpenTempTable
JetRollback
JetSeek
JetSetSystemParameter
Parameter Sistem