Fungsi JetOpenTempTable2
Berlaku untuk: Windows | Windows Server
Fungsi JetOpenTempTable2
Fungsi JetOpenTempTable2 membuat tabel sementara dengan satu indeks yang dapat digunakan untuk menyimpan dan mengambil rekaman seperti tabel biasa yang dibuat menggunakan JetCreateTableColumnIndex. Fungsi ini juga memiliki ID Lokal yang dapat digunakan untuk membandingkan data kolom kunci Unicode dalam tabel sementara. 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 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
);
Parameter
sesid
Sesi yang akan digunakan.
prgcolumndef
Definisi kolom kolom yang akan dibuat dalam tabel sementara.
Batasan penting ada untuk opsi definisi kolom yang 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 |
Urutan pengurutan kolom kunci untuk tabel sementara harus turun daripada naik. Jika opsi ini ditentukan tanpa JET_bitColumnTTKey maka opsi ini diabaikan. |
JET_bitColumnTTKey |
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.
Icid
ID lokal yang digunakan untuk membandingkan data kolom kunci Unicode dalam tabel sementara.
Lokal apa pun dapat digunakan selama paket bahasa yang sesuai telah diinstal pada komputer. Salah satu pengecualian adalah bahwa lokal Netral Bahasa (LCID nol) ilegal.
Pada Windows Server 2003 dan yang lebih baru, jika lokal Netral Bahasa ditentukan untuk parameter ini maka ID lokal default (Inggris AS) akan digunakan sebagai gantinya. Ini untuk memungkinkan nilai nol untuk menandakan default daripada nilai ilegal.
Ketika parameter ini tidak ada dan ketika parameter pidxunicode tidak ada, maka LCID default akan digunakan untuk membandingkan data kolom kunci Unicode dalam tabel sementara. LCID default adalah lokal Inggris A.S.
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_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_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_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 |
JetOpenTempTable2 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_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 |
Bidang cp 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 |
Bidang coltypJET_COLUMNDEF tidak diatur ke tipe kolom yang valid. |
JET_errIndexInvalidDef |
Indeks tidak dapat dibuat karena definisi indeks tidak valid ditentukan. JetOpenTempTable2 akan mengembalikan kesalahan ini ketika:
Kesalahan ini hanya akan dikembalikan oleh Windows 2000. |
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_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. JetOpenTempTable2 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.
Keterangan
Lihat JetOpenTempTable.
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
JET_COLUMNDEF
JET_COLUMNID
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JET_UNICODEINDEX
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
Parameter Sistem