Fungsi JetInit

Berlaku untuk: Windows | Windows Server

Fungsi JetInit

Fungsi JetInit menempatkan mesin database ke dalam status di mana ia dapat mendukung penggunaan aplikasi file database. Mesin harus sudah dikonfigurasi dengan benar untuk inisialisasi menggunakan JetSetSystemParameter. Pemulihan crash database dilakukan secara otomatis sebagai bagian dari proses inisialisasi.

JET_ERR JET_API JetInit(
  __in_out_opt  JET_INSTANCE* pinstance
);

Parameter

pinstance

Instans yang digunakan untuk panggilan ini.

Untuk Windows 2000, parameter ini diabaikan dan harus selalu NULL.

Untuk rilis Windows XP dan yang lebih baru, penggunaan parameter ini tergantung pada mode operasi mesin. Jika mesin beroperasi dalam mode warisan (mode kompatibilitas Windows 2000) di mana hanya satu instans yang didukung maka parameter ini mungkin NULL atau dapat diatur ke buffer output yang valid yang akan mengembalikan handel instans global yang dibuat sebagai efek samping dari inisialisasi. Buffer output ini harus diatur ke NULL atau JET_instanceNil. Handel instans ini kemudian dapat diteruskan ke fungsi lain yang menggunakan instans. Jika mesin beroperasi dalam mode multi-instans, parameter ini harus diatur ke buffer input yang valid yang berisi handel instans yang dikembalikan oleh instans fungsi JetCreateInstance yang sedang diinisialisasi.

Keterangan

Instans harus diinisialisasi dengan panggilan ke JetInit sebelum dapat digunakan oleh apa pun selain JetSetSystemParameter.

Instans dihancurkan oleh panggilan ke fungsi JetTerm , bahkan jika instans tersebut tidak pernah diinisialisasi menggunakan JetInit. Instans adalah unit pemulihan untuk mesin database. Ini mengontrol siklus hidup semua file yang digunakan untuk melindungi integritas data dalam sekumpulan file database. File-file ini mencakup file titik pemeriksaan dan file log transaksi.

Jumlah maksimum instans yang dapat dibuat kapan saja dikontrol oleh JET_paramMaxInstances, yang dapat dikonfigurasi dengan panggilan ke JetSetSystemParameter. Ketika mesin database diinisialisasi untuk pertama kalinya, JetInit akan membuat sekumpulan file awal untuk mendukung instans tersebut. File-file ini mencakup file titik pemeriksaan (bernama <JET_paramBaseName>. CHK), sekumpulan file log transaksi yang dipesan (bernama RES1. LOG dan RES2. LOG), file log transaksi awal (bernama <JET_paramBaseName>. LOG), dan file database sementara (dinamai sesuai dengan JET_paramTempPath). Jika JET_paramRecovery diatur ke "Nonaktif" maka file titik pemeriksaan dan file log tidak akan dibuat. Jika JET_paramMaxTemporaryTables diatur ke nol, maka file database sementara tidak akan dibuat. File-file ini mewakili jejak disk instans dan harus dikelola dengan hati-hati. Jika file-file ini rusak satu per satu atau sehubungan satu sama lain, maka data yang disimpan dalam database yang terkait dengan instans mungkin hilang.

Ketika mesin database diinisialisasi dengan sekumpulan file log transaksi yang ada, file-file tersebut akan diperiksa untuk melihat apakah inkarnasi instans sebelumnya mengalami crash. Jika crash terdeteksi, pemulihan crash akan secara otomatis dilakukan. Proses ini akan merekonstruksi database yang melekat pada instans selama inkarnasi mesin sebelumnya dan menyimpan perubahan kembali ke file database. Hasilnya akan menjadi database yang konsisten dengan transaksi. Proses ini mungkin memakan waktu cukup lama jika jumlah file log transaksi untuk diputar ulang terhadap database besar.

Karena fakta bahwa JetInit melakukan pemulihan crash, dimungkinkan bagi hampir semua kesalahan mesin database untuk dikembalikan jika terjadi kegagalan. Dalam praktiknya, sebagian besar kesalahan yang terlihat dalam penyebaran termasuk dalam dua kategori: kerusakan data dan kesalahan manajemen file. Kerusakan data akan memanifestasikan dirinya paling sering dalam kesalahan berikut atau serupa:

  • JET_errReadVerifyFailure

  • JET_errLogFileCorrupt

  • JET_errCheckpointCorrupt

Kesalahan ini hampir selalu disebabkan oleh masalah perangkat keras dan dengan demikian tidak dapat dihindari. Kesalahan kelola file akan memanifestasikan dirinya paling sering dalam kesalahan berikut atau serupa:

  • JET_errMissingLogFile

  • JET_errAttachedDatabaseMismatch

  • JET_errDatabaseSharingViolation

  • JET_errInvalidLogSequence

Jika pemulihan berjalan pada sekumpulan log, yang tidak semua database ada (yang akan mengembalikan kesalahan JET_errAttachedDatabaseMismatch dalam keadaan normal), dan klien ingin pemulihan untuk melanjutkan meskipun database hilang, JET_ bitReplayIgnoreMissingDB dapat digunakan untuk melanjutkan pemulihan untuk database yang tersedia. Kesalahan ini dapat dicegah oleh aplikasi. Aplikasi harus berhati-hati untuk melindungi repositori file-file ini dari manipulasi oleh kekuatan luar seperti pengguna atau aplikasi lain. Jika aplikasi ingin menghancurkan instans sepenuhnya maka semua file yang terkait dengan instans harus dihapus. Ini termasuk file titik pemeriksaan, file log transaksi, dan file database apa pun yang dilampirkan ke instans.

Fungsi JetInit berprilaku berbeda, sehubungan dengan file database yang dilampirkan ke instans, antara rilis Windows 2000 dan yang lebih baru.

Windows 2000: Di Windows 2000, database apa pun yang dilampirkan ke instans selama inkarnasi sebelumnya dari instans tersebut tetap melekat pada instans setelah JetInit berhasil diselesaikan. Tidak perlu memanggil JetAttachDatabase setelah JetInit untuk memastikan akses database nanti. Jika fungsi JetAttachDatabase dipanggil setelah fungsi JetInit , peringatan JET_wrnDatabaseAttached akan dikembalikan. Peringatan ini menunjukkan bahwa lampiran database dipertahankan dan dapat diabaikan.

Windows XP: Di Windows XP dan rilis yang lebih baru, semua database secara otomatis terlepas dari instans oleh JetInit. Ini berarti bahwa JetAttachDatabase harus selalu dipanggil setelah JetInit dalam kasus ini.

Aplikasi apa pun yang ditulis untuk dijalankan pada Windows 2000 dan pada rilis yang lebih baru harus selalu memanggil JetAttachDatabase setelah JetInit. Jika aplikasi berjalan pada Windows 2000 maka aplikasi harus mengharapkan untuk melihat JET_wrnDatabaseAttached dalam beberapa kasus. Lihat JetAttachDatabase untuk informasi selengkapnya.

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

File Mesin Penyimpanan yang Dapat Diperluas
JET_ERR
JET_GRBIT
JET_INSTANCE
JET_paramMaxTemporaryTables
JET_paramRecovery
JetAttachDatabase
JetCreateInstance
JetInit3
JetSetSystemParameter