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 JetReadFile
Fungsi JetReadFile mengambil konten file yang dibuka dengan JetOpenFile.
JET_ERR JET_API JetReadFile(
__in JET_HANDLE hfFile,
__out void* pv,
__in unsigned long cb,
__out_opt unsigned long* pcbActual
);
Parameter
hfFile
Handel file yang akan dibaca.
Pv
Buffer output yang akan menerima data file.
cb
Ukuran maksimum dalam byte dari buffer output.
pcbActual
Menerima jumlah aktual data file yang diambil.
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_errBackupAbortByServer |
Operasi gagal karena cadangan eksternal saat ini telah dibatalkan oleh panggilan ke JetStopService. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errClientRequestToStopJetService |
Tidak mungkin untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke 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 rilis yang lebih baru. |
JET_errInvalidParameter |
Salah satu parameter yang disediakan berisi nilai yang tidak terduga atau berisi nilai yang tidak masuk akal ketika dikombinasikan dengan nilai parameter lain. Ini dapat terjadi untuk JetReadFile ketika:
|
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 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_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 rilis yang lebih baru. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errRunningInMultiInstanceMode |
Operasi gagal karena upaya dilakukan untuk menggunakan mesin dalam mode warisan (mode kompatibilitas Windows 2000) di mana hanya satu instans yang didukung ketika sebenarnya beberapa instans sudah ada. |
JET_errTermInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan. |
Setelah berhasil, potongan data berikutnya dari file akan dibaca ke dalam buffer output. Jumlah byte aktual yang diambil juga akan dikembalikan. Offset file di mana bacaan berikutnya akan terjadi akan dimajukan dengan jumlah ini.
Jika gagal, status buffer output tidak terdefinisi. Kegagalan akan mengakibatkan pembatalan seluruh proses pencadangan untuk instans. Pada Windows XP dan rilis 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 JetReadFile menggunakan handel yang telah mengembalikan semua data dalam file yang mendasar (seperti panggilan sebelumnya yang dikembalikan lebih sedikit byte daripada ukuran buffer output) akan selalu berhasil tetapi mengembalikan nol byte data.
Buffer output besar harus digunakan untuk memaksimalkan performa pencadangan. Beberapa eksperimen mungkin diperlukan untuk menemukan tradeoff yang tepat antara konsumsi sumber daya dan throughput untuk situasi tertentu. Buffer output tidak boleh lebih kecil dari 64KB dalam hal apa pun.
Beberapa panggilan bersamaan ke JetReadFile menggunakan handel file yang sama tidak didukung. Ini berarti bahwa tidak mungkin untuk mengantre beberapa buffer untuk dibaca secara bersamaan terhadap file yang sama untuk mencapai throughput berurutan tinggi. Buffer besar tunggal harus digunakan sebagai gantinya.
Jika instans dikonfigurasi semikian rupa sehingga penggeseran halaman database diaktifkan (lihat JET_paramZeroDatabaseDuringBackup di Parameter Sistem) maka data yang dihapus akan dihapus dari database sebagai efek samping panggilan ke JetReadFile terhadap file database.
Sangat penting untuk memahami bagaimana pencadangan dan kerusakan data berinteraksi. Jika mesin database mendeteksi kerusakan data selama pencadangan maka itu akan gagal cadangan database yang terpengaruh atau dari 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 maka 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 data nol ini mengasumsikan bahwa pengelogan melingkar tidak diaktifkan (lihat JET_paramCircularLog dalam Parameter Sistem).
Penting juga untuk dipahami bahwa ketika kerusakan data ada cadangan streaming akan menjadi tempat yang paling mungkin untuk pertama kali terdeteksi. Ini terjadi karena pencadangan streaming adalah satu-satunya proses yang secara rutin memindai setiap halaman file database. Kemungkinan juga pencadangan streaming akan menjadi proses pertama untuk mendeteksi tanda-tanda awal kegagalan perangkat keras seperti yang dimanifestasikan oleh kesalahan kerusakan data terputus-terputus. Hal ini disebabkan oleh jumlah data yang diambil oleh cadangan serta kecepatan pengambilannya.
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 titik tertentu tetapi tidak memungkinkan mesin database untuk menentukan sumber kerusakan tersebut. Secara historis, penyebab dominan korupsi tersebut telah ditemukan berasal dari sumber selain mesin database itu sendiri.
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
JET_ERR
JET_HANDLE
JET_INSTANCE
JetOpenFile
JetStopService
Parameter Sistem