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