Fungsi JetAttachDatabase
Berlaku untuk: Windows | Windows Server
Fungsi JetAttachDatabase
Fungsi JetAttachDatabase melampirkan file database untuk digunakan dengan instans database. Untuk menggunakan database, database harus kemudian dibuka dengan JetOpenDatabase.
JET_ERR JET_API JetAttachDatabase(
__in JET_SESID sesid,
__in const tchar* szFilename,
__in JET_GRBIT grbit
);
Parameter
sesid
Konteks sesi database yang akan digunakan untuk panggilan API.
szFilename
Nama database yang akan dilampirkan.
grbit
Sekelompok bit yang menentukan nol atau beberapa opsi berikut.
Nilai |
Makna |
---|---|
JET_bitDbDeleteCorruptIndexes |
Jika JET_paramEnableIndexChecking telah diatur, semua indeks melalui data Unicode akan dihapus. Lihat bagian Keterangan untuk detail selengkapnya. |
JET_bitDbDeleteUnicodeIndexes |
Semua indeks melalui data Unicode akan dihapus, terlepas dari pengaturan JET_paramEnableIndexChecking. Lihat bagian Keterangan untuk detail selengkapnya. |
JET_bitDbUpgrade |
Kedaluwarsa. Jangan gunakan. |
JET_bitDbReadOnly |
Mencegah modifikasi pada database. |
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_errBackupInProgress |
Melampirkan database tidak diperbolehkan selama pencadangan. |
JET_errDatabaseFileReadOnly |
File database yang ditentukan oleh szFilename harus dapat ditulis. Atribut Read-Only tidak boleh diatur, dan proses yang sedang berjalan harus memiliki hak istimewa yang memadai untuk menulis ke file. |
JET_errDatabaseInUse |
File database sudah dibuka oleh proses lain. |
JET_errDatabaseInvalidPath |
Jalur yang tidak valid diberikan dalam szFilename. szFilename harus non-NULL dan merujuk ke jalur yang valid. |
JET_errDatabaseSharingViolation |
File database telah dilampirkan oleh sesi lain. |
JET_errFileAccessDenied |
Mesin database tidak dapat membuka file database. File mungkin sedang digunakan oleh proses lain atau pemanggil mungkin tidak memiliki hak istimewa yang memadai untuk membuka file. |
JET_errFileNotFound |
File yang diberikan dalam szFilename tidak ada. |
JET_errPrimaryIndexCorrupted |
Ada kesalahan dengan indeks utama. Ini mungkin dari kerusakan fisik (seperti disk atau kerusakan memori). Ini juga dapat dikembalikan saat melampirkan database yang terakhir diubah pada sistem operasi yang lebih lama dan indeks utama melebihi kolom dengan data Unicode. Lihat keterangan untuk informasi selengkapnya tentang indeks melalui data Unicode. |
JET_errSecondaryIndexCorrupted |
Ada kesalahan dengan indeks sekunder. Ini mungkin dari kerusakan fisik (seperti disk atau kerusakan memori). Ini juga dapat dikembalikan saat melampirkan database yang terakhir diubah pada sistem operasi yang lebih lama dan indeks sekunder melebihi kolom dengan data Unicode. Lihat keterangan untuk informasi selengkapnya tentang indeks melalui data Unicode. Indeks sekunder sepenuhnya dibangun kembali ketika database didefragmentasi dengan utilitas offline menggunakan perintah berikut: esentutl -d. |
JET_errTooManyAttachedDatabases |
Hanya jumlah database terbatas yang dapat dilampirkan per instans. Batasnya saat ini adalah tujuh database per instans. |
JET_wrnDatabaseAttached |
Peringatan nonfungsi yang menunjukkan bahwa file database telah dilampirkan oleh sesi ini. |
Keterangan
Memanggil JetAttachDatabase setara dengan memanggil JetAttachDatabase2 dan melewati nilai nol, yang berarti tidak ada batasan, untuk parameter cpgDatabaseSizeMax .
Melampirkan database bisa-tulis (yaitu, jika JET_bitDbReadOnly tidak ditentukan dalam parameter grbit ) akan membuka file secara eksklusif di tingkat sistem operasi. Tidak ada proses lain yang dapat membuka file. Dimungkinkan bagi beberapa proses untuk melampirkan database tunggal dengan membukanya dalam mode baca-saja.
File database dilepas menggunakan JetDetachDatabase atau JetDetachDatabase2.
Parameter pemeriksaan indeks
Versi Windows yang berbeda menormalkan teks Unicode dengan cara yang berbeda. Itu berarti indeks yang dibangun di bawah satu versi Windows mungkin tidak berfungsi pada versi lain.
Sebelum Windows Server 2003, ketika versi sistem operasi berubah (termasuk penginstalan Paket Layanan), setiap indeks melalui data Unicode berada dalam status yang berpotensi rusak.
Indeks yang dibuat di Windows Server 2003 dan yang lebih baru ditandai dengan versi normalisasi Unicode yang dibuat. Indeks yang lebih lama tidak berisi informasi versi. Sebagian besar perubahan normalisasi Unicode terdiri dari penambahan karakter baru, titik kode yang sebelumnya tidak terdefinisi sekarang ditentukan dan dinormalisasi secara berbeda. Dengan demikian, jika data biner disimpan dalam kolom Unicode, data tersebut akan dinormalisasi secara berbeda saat titik kode baru ditentukan.
Pada Windows Server 2003, mesin database ESE melacak entri indeks Unicode yang berisi titik kode yang tidak terdefinisi. Ini dapat digunakan untuk memperbaiki indeks ketika kumpulan karakter Unicode yang ditentukan berubah.
Parameter ini mengontrol apa yang terjadi ketika mesin database ESE melekat pada database yang terakhir digunakan di bawah build sistem operasi yang berbeda. Versi sistem operasi dicap di header database.
Jika JET_paramEnableIndexChecking diatur ke TRUE, dan database berisi indeks yang berpotensi rusak:
JetAttachDatabase akan menghapus indeks yang berpotensi rusak jika grbit berisi JET_bitDbDeleteCorruptIndexes
JetAttachDatabaseakan mengembalikan kesalahan jika grbit tidak berisi JET_bitDbDeleteCorruptIndexes dan ada indeks yang perlu dihapus.
Jika JET_paramEnableIndexChecking diatur ke FALSE:
- JetAttachDatabase akan mengabaikan indeks yang berpotensi rusak, dan mengembalikan JET_errSuccess (dengan asumsi tidak ada kesalahan lain).
Windows Server 2003 dan yang lebih baru: Jika JET_paramEnableIndexChecking belum direset, tabel perbaikan internal akan digunakan untuk memperbaiki entri indeks. Ini mungkin tidak memperbaiki semua kerusakan indeks tetapi akan transparan untuk aplikasi.
Jika database dilampirkan sebagai baca-saja, indeks tidak dapat diperbaiki atau dihapus. Dalam hal ini, API akan mengembalikan kesalahan, seperti JET_errSecondaryIndexCorrupted atau JET_errPrimaryIndexCorrupted.
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. |
Unicode |
Diimplementasikan sebagai JetAddColumnW (Unicode) dan JetAddColumnA (ANSI). |
Lihat juga
File Mesin Penyimpanan yang Dapat Diperluas
JET_ERR
JET_GRBIT
JET_SESID
JET_TABLEID
JetAttachDatabase2
JetCreateDatabase
JetDetachDatabase
JetDetachDatabase2
JetOpenDatabase
JetSetSystemParameter