Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: Windows | Windows Server
Fungsi JetReadFileInstance
Fungsi JetReadFileInstance mengambil konten file yang dibuka dengan fungsi JetOpenFileInstance .
Windows XP: JetReadFileInstance diperkenalkan di Windows XP.
JET_ERR JET_API JetReadFileInstance(
__in JET_INSTANCE instance,
__in JET_HANDLE hfFile,
__out void* pv,
__in unsigned long cb,
__out_opt unsigned long* pcb
);
Parameter
Sebagai contoh
Instans yang digunakan untuk panggilan API tertentu.
Perhatikan bahwa untuk Windows 2000, varian API yang menerima parameter ini tidak tersedia karena hanya satu instans yang didukung. Penggunaan instans global yang satu ini tersirat dalam kasus ini.
Untuk rilis Windows XP dan yang lebih baru, Anda dapat memanggil varian API yang tidak menerima parameter ini hanya ketika mesin berada dalam mode warisan (mode kompatibilitas Windows 2000) jika hanya satu instans yang didukung. Jika tidak, operasi akan gagal dan mengembalikan kesalahan JET_errRunningInMultiInstanceMode.
hfFile
Handel file yang akan dibaca.
Pv
Buffer output yang akan menerima data file.
cb
Ukuran maksimum, dalam byte, dari buffer output.
Pcb
Jumlah aktual data file yang diambil.
Tampilkan Nilai
Fungsi ini memfasilitasi pengembalian jenis data JET_ERR apa pun yang ditentukan dalam API Extensible Storage Engine (ESE). Untuk informasi selengkapnya tentang kesalahan JET, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.
Menampilkan kode |
Makna |
|---|---|
JET_errSuccess |
Operasi berhasil diselesaikan. |
JET_errBackupAbortByServer |
Operasi gagal karena cadangan eksternal saat ini telah dibatalkan oleh panggilan ke fungsi JetStopService . Kesalahan ini hanya akan dikembalikan oleh Windows XP dan versi Windows yang lebih baru. |
JET_errClientRequestToStopJetService |
Tidak dimungkinkan untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke fungsi 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 versi Windows yang lebih baru. |
JET_errInvalidParameter |
Salah satu parameter yang ditentukan berisi nilai tak terduga atau nilai yang tidak masuk akal ketika dikombinasikan dengan nilai parameter lain. Ini dapat terjadi untuk fungsi JetReadFileInstance ketika salah satu hal berikut terjadi:
|
JET_errLogReadVerifyFailure |
Operasi gagal karena kerusakan data yang tidak dapat dipulihkan terdeteksi saat membaca file log transaksi. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan versi Windows yang lebih baru. |
JET_errNoBackup |
Operasi gagal karena tidak ada pencadangan eksternal yang sedang berlangsung. |
JET_errNotInitialized |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi ini belum diinisialisasi. |
JET_errReadVerifyFailure |
Operasi gagal karena kerusakan data yang tidak dapat dipulihkan terdeteksi saat membaca halaman database dari file database atau file patch database. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi ini. |
JET_errRunningInMultiInstanceMode |
Operasi gagal karena upaya dilakukan untuk menggunakan mesin dalam mode warisan (mode kompatibilitas Windows 2000) dalam kasus di mana hanya satu instans yang didukung tetapi beberapa instans sudah ada. |
JET_errTermInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi ini sedang dimatikan. |
Jika berhasil, potongan data berikutnya dari file akan dibaca ke dalam buffer output. Jumlah byte aktual yang diambil juga akan dikembalikan. Offset file tempat pembacaan berikutnya akan terjadi akan dimajukan dengan jumlah ini.
Jika gagal, status buffer output tidak terdefinisi. Kegagalan akan mengakibatkan pembatalan seluruh proses pencadangan untuk instans saat ini. Di Windows XP dan versi Windows yang lebih baru, cadangan tidak akan dibatalkan jika terjadi kesalahan saat membaca file database. Namun, cadangan file database tersebut masih akan dibatalkan dan handel yang sesuai akan ditutup secara otomatis.
Keterangan
Setiap panggilan ke fungsi JetReadFileInstance yang dibuat dengan menggunakan handel yang telah mengembalikan semua data dalam file yang mendasar (seperti jika panggilan sebelumnya mengembalikan lebih sedikit byte daripada ukuran buffer output) akan selalu berhasil tetapi akan mengembalikan nol byte data.
Anda harus menggunakan buffer output besar untuk memaksimalkan performa cadangan. Anda mungkin perlu bereksperimen untuk menemukan tradeoff optimal antara konsumsi sumber daya dan throughput untuk situasi tertentu. Bagaimanapun, buffer output tidak boleh lebih kecil dari 64 KB. Penunjuk yang Anda berikan ke JetReadFileInstance harus diselaraskan dengan batas halaman memori (baik 4 KB atau 8 KB). Anda dapat melakukan ini dengan memanggil fungsi VirtualAlloc .
Beberapa panggilan bersamaan ke JetReadFileInstance yang dilakukan dengan menggunakan handel file yang sama tidak didukung. Ini berarti bahwa tidak mungkin untuk mengantre beberapa buffer untuk pembacaan bersamaan terhadap file yang sama untuk mencapai throughput berurutan tinggi. Anda harus menggunakan satu buffer besar sebagai gantinya.
Jika Anda telah mengonfigurasi instans tertentu sehingga scrubbing halaman database diaktifkan (lihat parameter JET_paramCircularLog dalam Parameter Sistem), data yang dihapus akan dihapus dari database sebagai efek samping dari panggilan ke JetReadFileInstance terhadap file database.
Sangat penting untuk memahami bagaimana pencadangan dan kerusakan data berinteraksi. Jika mesin database mendeteksi kerusakan data selama pencadangan, mesin database akan gagal mencadangkan database yang terpengaruh atau seluruh instans. Ini adalah keputusan desain sadar yang dimaksudkan untuk melindungi dari kehilangan data. Jika mesin database memungkinkan pencadangan berhasil di mana terjadi kerusakan data, ada kemungkinan cadangan yang lebih lama dan tidak rusak dapat dibuang sebagai hasilnya. Ini akan sangat disayangkan karena dimungkinkan untuk memperbaiki kerusakan data pada instans langsung dengan memulihkan cadangan tersebut dan memutar ulang semua file log transaksi terhadap database tersebut. Skenario kehilangan nol data ini mengasumsikan bahwa pengelogan melingkar tidak diaktifkan (lihat JET_paramCircularLog dalam Parameter Sistem).
Penting juga untuk dipahami bahwa kasus kerusakan data biasanya pertama kali terdeteksi selama pencadangan streaming. Ini karena pencadangan streaming adalah satu-satunya proses yang secara rutin memindai setiap halaman file database. Kemungkinan juga bahwa pencadangan streaming akan menjadi proses pertama untuk mendeteksi tanda-tanda awal kegagalan perangkat keras sebagaimana dimanifestasikan oleh kesalahan kerusakan data terputus-terputus, karena jumlah data yang diambil oleh cadangan dan kecepatan pengambilan data tersebut.
Kerusakan data terdeteksi oleh mesin database melalui penggunaan checksum blok. Checksum ini diatur tepat sebelum halaman database menulis dan diverifikasi pada halaman database yang dibaca. Skema ini memungkinkan mesin database untuk menentukan bahwa data telah rusak pada beberapa titik, tetapi tidak memungkinkan mesin database untuk menentukan sumber kerusakan tersebut. Secara historis, instans kerusakan data tersebut telah berasal dari sumber selain mesin database itu sendiri.
Persyaratan
| Persyaratan | Nilai |
|---|---|
Klien |
Memerlukan Windows Vista atau Windows XP. |
Server |
Memerlukan Windows Server 2008 atau Windows Server 2003. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Menggunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Lihat juga
JET_ERR
JET_HANDLE
JET_INSTANCE
JetOpenFileInstance
JetStopService
Parameter Sistem