Bagikan melalui


Fungsi JetExternalRestore

Berlaku untuk: Windows | Windows Server

Fungsi JetExternalRestore

Fungsi JetExternalRestore memulihkan cadangan eksternal yang diambil dengan API cadangan eksternal dan menentukan rentang nomor file log untuk diputar ulang selama proses pemulihan. Ini dikenal sebagai pemulihan keras, yang mirip dengan tetapi berbeda dari pemulihan lunak seperti yang dilakukan oleh fungsi JetInit .

JET_ERR JET_API JetExternalRestore(
  __in          JET_PSTR szCheckpointFilePath,
  __in          JET_PSTR szLogPath,
  __in_opt      JET_RSTMAP* rgrstmap,
  __in          long crstfilemap,
  __in          JET_PSTR szBackupLogPath,
  __in          long genLow,
  __in          long genHigh,
  __in          JET_PFNSTATUS pfn
);

Parameter

szCheckpointFilePath

Jalur untuk file titik pemeriksaan yang akan digunakan selama pemulihan jika szTargetInstanceCheckpointPath tidak ditentukan atau sudah memiliki instans aktif atau berjalan.

szLogPath

Jalur atau direktori untuk log untuk fase akhir (membatalkan) pemulihan, dan mungkin untuk roll forward log. Jalur ini mungkin sama dengan szBackupLogPath.

rgrstmap

Ini adalah array struktur JET_RSTMAP . Ini adalah peta jalur database atau nama file lama dan baru. Ini digunakan karena database mungkin perlu dipulihkan ke lokasi selain lokasi tempat database dicadangkan. Dalam kasus di mana beberapa database dilampirkan ke satu kumpulan pengelogan, peta pemulihan dapat menentukan subset database untuk dipulihkan.

crstfilemap

Jumlah entri dalam parameter array rgrstmap .

szBackupLogPath

Jalur ke direktori tempat file log dipulihkan. Ini adalah log yang dibaca selama urutan cadangan eksternal. Jalur ini mungkin sama dengan szLogPath.

genLow

Nomor file log terendah yang akan diputar ulang dari szBackupLogPath. Keakuratan penuh dari panjang yang tidak ditandatangani harus dipertahankan, tetapi dalam versi mesin saat ini angka ini adalah angka heksadesimal dalam rentang dari 0x00000 hingga 0xFFFFF. Ini dapat berubah dalam versi yang akan datang.

genHigh

Nomor file log tertinggi yang akan diputar ulang dari szBackupLogPath. Keakuratan penuh dari panjang yang tidak ditandatangani harus dipertahankan, tetapi dalam versi mesin saat ini angka ini adalah angka heksadesimal dalam rentang dari 0x00000 hingga 0xFFFFF. Ini dapat berubah dalam versi yang akan datang.

pfn

Panggilan balik status, untuk melaporkan kemajuan pemulihan.

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_errOutOfMemory

Operasi gagal karena memori tidak cukup dapat dialokasikan untuk menyelesaikannya.

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 JetExternalRestore, dan sebagainya ketika szTargetCheckpointPath dan szTargetInstanceLogPath tidak ditentukan atau tidak keduanya tidak ditentukan. Artinya, mereka harus cocok, dan ditentukan atau keduanya tidak ditentukan.

JET_errDatabaseCorrupted

Ini menunjukkan database rusak, atau file yang tidak dikenali.

JET_errFileNotFound

Operasi gagal karena tidak dapat membuka file yang diminta karena tidak dapat ditemukan pada jalur yang ditentukan.

JET_errInvalidPath

Operasi gagal karena jalur yang ditentukan tidak dapat ditemukan.

JET_errRestoreOfNonBackupDatabase

Kesalahan ini dikembalikan jika file database yang ditentukan selama pemulihan bukan database yang dicadangkan dengan cadangan eksternal.

JET_errStartingRestoreLogTooHigh

Kesalahan ini dikembalikan jika salah satu file log di szBackupLogPath, memiliki pembuatan log di bawah yang ditentukan oleh genLow atau pLogInfo.ulGenLow.

JET_errEndingRestoreLogTooLow

Kesalahan ini dikembalikan jika satu file log di szBackupLogPath, memiliki pembuatan log di atas yang ditentukan dalam genHigh atau pLogInfo.ulGenHigh.

JET_errBadRestoreTargetInstance

szTargetInstanceLogPath yang ditentukan bukan milik instans yang diinisialisasi. Kesalahan ini hanya akan dikembalikan di Windows XP dan yang lebih baru.

JET_errRunningInOneInstanceMode

Mesin database tidak dapat menjalankan pemulihan eksternal atau pemulihan keras dalam mode instans tunggal. Kesalahan ini hanya akan dikembalikan di Windows XP dan yang lebih baru.

Setelah berhasil, semua database dari rgrstmap sepenuhnya pulih dan dalam keadaan bersih atau konsisten. Pada titik ini database dapat dilepaskan kembali ke instans yang ada.

Jika gagal, mesin tidak dapat memulihkan database. Database dalam status tidak valid, dan untuk mencoba kembali pemulihan keras seluruh database harus dipulihkan lagi. Biasanya, sumber situasi seperti itu adalah disk atau kerusakan log, atau beberapa bentuk kesalahan pengelolaan log lainnya, atau kumpulan log yang tidak berkelanjutan.

Keterangan

Untuk memahami cara kerja pemulihan "keras", Anda harus memahami bahwa ada tiga fase pemulihan, dan fase kedua dapat memiliki dua bagian. Pada Fase I, log diperlukan untuk membawa database yang dicadangkan ke konsistensi (atau sekumpulan awal log inkremental dapat digunakan). Pada Fase II, setiap log roll forward tambahan yang tersedia dikonsumsi untuk membuat database konsisten. Ada juga pemutaran ulang log roll forward tambahan. Fase III adalah fase pemulihan urung.

Fase I: Pemutaran ulang kumpulan log yang harus dipulihkan agar database dibawa ke status konsisten (atau set awal file log) dilakukan. Pada dasarnya, ini adalah pemutaran ulang kumpulan file log yang tidak opsional untuk database yang dipulihkan. Jika ada log yang hilang dari rentang log ini, pemulihan akan gagal. Log ini harus dimasukkan ke dalam direktori yang ditentukan dalam parameter szBackupLogPath .

Fase II: Secara opsional, mungkin ada beberapa set file log yang bergulir meneruskan file log yang berasal dari cadangan bertahap atau diferensial dan dari file log instans aktif. Dalam kasus file log dari cadangan inkremental atau diferensial, file log dapat ditempatkan di direktori yang ditentukan dalam parameter szBackupLogPath atau szTargetInstanceLogPath , dengan sebelumnya menjadi direktori yang direkomendasikan. Log yang digunakan untuk fase roll forward (fase II) harus berasal dari seri log yang sama yang dimainkan selama Fase I dan seharusnya terus meningkatkan nomor log tanpa celah dari log Fase I. Untuk memutar database agar sepenuhnya diperbarui dengan file log yang saat ini digunakan oleh instans aktif, parameter szTargetInstanceLogPath dan szTargetInstanceCheckpointPath harus ditentukan. Ini dapat dilakukan bahkan saat database lain dilampirkan ke kumpulan log tersebut.

Fase III: Dalam fase akhir pemulihan, setiap transaksi yang tidak dilakukan digulung balik, yang memerlukan pembuatan file log baru dan memperbarui file titik pemeriksaan. Fase ini terkadang disebut sebagai "batalkan". Jalur file titik pemeriksaan yang akan digunakan selama fase ini adalah jalur yang dianalogikan dengan lokasi log fase III, yaitu, jika szLogPath digunakan untuk Fase III, szCheckpointFilePath akan digunakan, jika szTargetInstanceLogPath digunakan untuk fase III pemulihan szTargetInstanceCheckpointPath akan digunakan.

Untuk memahami cara kerja jalur, gunakan bagan alur ini:

ESE_Documentation_ese1 ESE_Documentation_ese1

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 JetExternalRestoreW (Unicode) dan JetExternalRestoreA (ANSI).

Lihat juga

JET_ERR
JET_PFNSTATUS
JET_RSTMAP
JET_LOGINFO
JetBeginExternalBackup
JetInit