Fungsi JetOpenTemporaryTable
Berlaku untuk: Windows | Windows Server
Fungsi JetOpenTemporaryTable
Fungsi JetOpenTemporaryTable membuat tabel volatil dengan satu indeks yang dapat digunakan untuk menyimpan dan mengambil rekaman, sama seperti tabel biasa yang dibuat melalui JetCreateTableColumnIndex.
Windows Vista:JetOpenTemporaryTable diperkenalkan di Windows Vista.
Tabel sementara lebih cepat daripada tabel biasa karena sifatnya yang mudah menguras. Mereka dapat dengan cepat mengurutkan dan melakukan penghapusan duplikat pada kumpulan catatan ketika diakses secara murni berurutan.
JET_ERR JET_API JetOpenTemporaryTable(
__in JET_SESID sesid,
__in JET_OPENTEMPORARYTABLE* popentemporarytable
);
Parameter
sesid
Sesi yang akan digunakan untuk panggilan ini.
popentemporarytable
Penunjuk ke struktur JET_OPENTEMPORARYTABLE yang berisi deskripsi tabel sementara untuk dibuat pada input. Setelah panggilan berhasil, struktur berisi handel ke tabel sementara dan identifikasi kolom.
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_errOutOfMemory |
Operasi gagal karena memori tidak cukup dapat dialokasikan untuk menyelesaikannya. JetOpenTemporaryTable dapat mengembalikan JET_errOutOfMemory jika ruang alamat proses host menjadi terlalu terfragmentasi. Manajer tabel sementara akan mengalokasikan potongan ruang alamat 1 MB untuk setiap tabel sementara yang dibuat terlepas dari jumlah data yang disimpan. |
JET_errInvalidParameter |
Salah satu parameter yang disediakan berisi nilai yang tidak terduga atau kombinasi beberapa nilai parameter menghasilkan hasil yang tidak terduga. Kesalahan ini dikembalikan oleh JetOpenTemporaryTable dalam kondisi berikut:
|
JET_errNotInitialized |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errClientRequestToStopJetService |
Operasi tidak dapat diselesaikan karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService. |
JET_errInstanceUnavailable |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Windows XP: Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errTermInProgress |
Operasi tidak dapat diselesaikan karena instans yang terkait dengan sesi sedang dimatikan. |
JET_errRestoreInProgress |
Operasi tidak dapat diselesaikan 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. Windows XP: Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errInvalidSesid |
Handel sesi tidak valid atau mengacu pada sesi tertutup. Catatan Kesalahan ini tidak dikembalikan dalam semua keadaan. Handel hanya divalidasi berdasarkan upaya terbaik. |
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_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. |
JET_errCannotMaterializeForwardOnlySort |
JetOpenTemporaryTable gagal karena JET_bitTTForwardOnly ditentukan dan tabel sementara yang ditentukan tidak dapat dibuat menggunakan pengoptimalan maju-saja. Windows Server 2003: Kesalahan ini hanya akan dikembalikan oleh Windows Server 2003 dan rilis yang lebih baru. |
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 dengan panjang variabel, dan tidak lebih dari kolom yang diberi tag JET_ccolTaggedMost. |
JET_errTooManyOpenTables |
Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk menyimpan skema tabel. Untuk mengonfigurasi jumlah tabel yang memiliki skema yang dapat di-cache, gunakan JetSetSystemParameter dengan JET_paramMaxOpenTables. |
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 coltypJET_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. Windows XP: Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. Windows 2000: Pada Windows 2000, bendera normalisasi yang tidak valid akan menghasilkan JET_errIndexInvalidDef. |
JET_errIndexInvalidDef |
Indeks tidak dapat dibuat karena definisi indeks tidak valid ditentukan. JetOpenTemporaryTable akan mengembalikan kesalahan ini dalam kondisi berikut:
Windows 2000: Kesalahan ini hanya akan dikembalikan oleh Windows 2000. |
JET_errTooManyOpenIndexes |
Operasi gagal karena mesin tidak dapat mengalokasikan sumber daya yang diperlukan untuk menyimpan indeks tabel. Untuk mengonfigurasi jumlah indeks yang memiliki skema yang dapat di-cache, gunakan JetSetSystemParameter dengan JET_paramMaxOpenTables. |
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
Tabel sementara tidak mendukung pelengkap penuh opsi definisi kolom yang biasanya didukung oleh mesin database. Bahkan, hanya JET_bitColumnFixed dan JET_bitColumnTagged yang didukung. Ini berarti bahwa tidak dimungkinkan untuk membuat kolom kenaikan otomatis, versi, atau multinilai dalam tabel sementara. Akhirnya, kolom pembaruan escrow tidak didukung karena hanya dapat digunakan oleh satu sesi pada satu waktu. Jika salah satu opsi ini diminta, opsi tersebut akan diabaikan.
Tabel sementara tidak mendukung nilai default. Jika definisi kolom disediakan yang berisi spesifikasi nilai default, spesifikasi tersebut akan diabaikan.
Tabel sementara dikembalikan ke pemanggil sebagai hasil dari banyak fungsi ESE yang berbeda. Misalnya, JetGetIndexInfo dengan kumpulan opsi JET_IdxInfo akan mengembalikan tabel sementara yang berisi daftar semua kolom kunci dalam indeks tertentu. Tabel sementara mengikuti aturan siklus hidup yang sama dengan tabel sementara biasa seperti yang dijelaskan di sini.
Tabel sementara juga digunakan secara internal oleh mesin database untuk banyak tugas. Yang paling penting dari tugas-tugas ini adalah pembuatan indeks melalui tabel yang ada. Tabel sementara akan digunakan untuk mengurutkan kunci indeks yang digunakan untuk membangun indeks tersebut.
Semua tabel sementara disimpan dalam database sementara. Database sementara adalah file database khusus yang dipertahankan selama masa pakai instans ESE dan dihapus ketika instans tersebut dimatikan atau dimulai ulang. Lokasi database sementara dapat dikonfigurasi menggunakan JetSetSystemParameter dengan JET_paramTempPath. Penempatan database sementara pada disk relatif terhadap file log transaksi dan file database Anda mungkin penting jika aplikasi Anda sering menggunakan tabel sementara atau sering membuat indeks.
Siklus hidup tabel sementara terkait dengan kursor yang mereferensikannya. Jika semua kursor yang mereferensikan tabel sementara ditutup, baik secara implisit maupun eksplisit, tabel sementara akan dihapus. Jika tabel sementara dibuat di dalam transaksi dan transaksi tersebut kemudian digulung balik, tabel sementara akan dihapus karena kursor apa pun yang mereferensikannya saat ini akan ditutup secara implisit. Kursor baru hanya dapat mereferensikan tabel sementara melalui penggunaan JetDupCursor. Dalam hal ini, kursor baru akan diposisikan pada entri indeks pertama tabel sementara. JetDupCursor hanya akan berfungsi selama fase penggunaan tertentu untuk tabel sementara. Lihat keterangan mengenai kemampuan kursor tabel sementara untuk informasi selengkapnya. Tidak dimungkinkan untuk mereferensikan tabel sementara dari lebih dari satu sesi pada satu waktu.
Hati Ada masalah penting di JetDupCursor yang memengaruhi tabel sementara. Jika upaya dilakukan untuk menduplikasi tabel sementara yang berada dalam mode maju-saja maka kursor yang dihasilkan tidak akan dibuat dengan benar dan akan tidak berfungsi. Masih aman untuk menduplikasi kursor di atas tabel sementara yang terwujud.
Manajer tabel sementara dapat menerapkan tabel sementara dengan tiga cara. Metode pertama adalah mempertahankan tabel dalam memori. Strategi ini adalah yang tercepat tetapi hanya dapat digunakan untuk tabel kecil, sederhana, sementara. Metode kedua adalah membuat pengurutan berbasis disk yang dapat didorong menggunakan iterator khusus maju. Strategi ini hanya dapat digunakan dalam keadaan tertentu dan merupakan cara tercepat untuk mengurutkan dan menghapus duplikat dari himpunan data yang sangat besar. Metode ketiga adalah membuat Pohon B+ di database sementara untuk menahan tabel sementara. Strategi ini adalah yang paling lambat, tetapi yang paling serbaguna, dan disebut sebagai tabel sementara materialisasi. Strategi ini dapat digunakan dalam kombinasi untuk akhirnya mencapai fungsionalitas yang diminta dari tabel sementara.
Ketika tabel sementara tidak terwujud, tabel tersebut digunakan terutama dalam dua fase utama. Fase pertama adalah fase penyisipan di mana tabel diisi dengan himpunan data awalnya. Selama fase ini, hanya penyisipan data yang diizinkan. Fase ini berakhir ketika upaya dilakukan untuk memindahkan kursor menggunakan JetMove atau JetSeek. Fase kedua adalah fase ekstraksi data. Selama fase ini, data yang disimpan dalam tabel sementara dapat diekstraksi sesuai dengan kemampuan yang diminta ketika tabel sementara dibuat.
Kapabilitas Kursor Tabel Sementara
Ketika tabel sementara terwujud, kursor memiliki kemampuan berikut tetapi mungkin lebih dibatasi oleh opsi yang diminta:
Ketika tabel sementara tidak terwujud dan berada dalam fase sisipan, kursor memiliki kemampuan berikut tetapi mungkin lebih dibatasi oleh opsi yang diminta:
-
Catatan Menyebabkan transisi ke fase ekstrak.
-
Catatan Menyebabkan transisi ke fase ekstrak.
Ketika tabel sementara tidak terwujud dan berada dalam fase ekstrak, kursor memiliki kemampuan berikut tetapi dapat dibatasi lebih lanjut oleh opsi yang diminta:
-
Catatan Jika upaya dilakukan untuk menduplikasi tabel sementara yang berada dalam mode maju-saja maka kursor yang dihasilkan tidak akan dibuat dengan benar dan akan tidak berfungsi. Masih aman untuk menduplikasi kursor di atas tabel sementara yang terwujud.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien |
Memerlukan Windows Vista. |
Server |
Membutuhkan Windows Server 2008. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Gunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Lihat juga
JET_ERR
JET_SESID
JET_OPENTEMPORARYTABLE
JetCloseTable
JetCreateTableColumnIndex
JetDupCursor
JetMove
JetRollback
JetSeek
JetSetSystemParameter
Parameter Informasi
Parameter Database Sementara
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk