Fungsi JetDefragment2

Berlaku untuk: Windows | Windows Server

Fungsi JetDefragment2

Fungsi JetDefragment2 memulai dan menghentikan tugas defragmentasi database yang meningkatkan organisasi data dalam database, dengan parameter panggilan balik yang tersedia untuk melaporkan kemajuan defragmentasi. Hal ini dilakukan untuk membatasi pertumbuhan database dengan menggunakan alokasi disk yang ada secara lebih efisien dalam database. Ini juga dapat mengurangi set kerja dengan memastikan bahwa data lebih dikemas dengan cermat. Terakhir, ini dapat meningkatkan performa aplikasi dengan mempercepat operasi umum melalui organisasi data yang lebih baik.

Windows XP:JetDefragment2 diperkenalkan di Windows XP.

JetDefragment2 juga berisi parameter fungsi panggilan balik yang digunakan untuk melaporkan kemajuan proses defragmentasi.

Defragmentasi database adalah operasi online dan tidak mengganggu aktivitas database reguler seperti operasi kueri atau pembaruan data. JetDefragment2 juga tidak membuat salinan semua data yang ada. Sebaliknya, itu mendefragmentasi database di tempat. Terakhir, JetDefragment2 memulihkan ruang database internal untuk digunakan kembali tetapi tidak melepaskan ruang berlebih ke sistem file sistem operasi.

Format data yang dihasilkan bisa jauh lebih efisien tetapi umumnya tidak optimal. Defragmentasi terbatas untuk merilis halaman database untuk digunakan kembali yang berisi data yang telah dihapus secara logis. Defragmentasi juga membuat halaman database tersedia untuk digunakan kembali dalam beberapa kasus dengan menggabungkan data dari dua halaman ketika dapat pas pada satu halaman.

Operasi ini berbeda dari JetCompact yang membuat salinan database baca-saja ke dalam bentuk yang sangat optimal.

JET_ERR JET_API JetDefragment2(
  __in          JET_SESID sesid,
  __in          JET_DBID dbid,
  __in          JET_PCSTR szTableName,
  __out_opt     unsigned long* pcPasses,
  __out_opt     unsigned long* pcSeconds,
  __in          JET_CALLBACK callback,
  __in          JET_GRBIT grbit
);

Parameter

sesid

Sesi yang digunakan untuk panggilan ini.

dbid

Database yang akan didefragmentasi.

szTableName

Terkadang szTableName diperlukan, dan terkadang dilarang:

grbit szTableName
JET_bitDefragmentBTreeBatch Harus berupa NULL.
JET_bitDefragmentBTree Menentukan nama tabel/BTree yang akan didefragmentasi.
Lain Harus berupa NULL.

Defragmentasi dilakukan untuk seluruh database yang dijelaskan oleh ID database tertentu.

pcPasses

Saat memulai tugas defragmentasi online, parameter input opsional ini menetapkan jumlah maksimum lolos defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output opsional ini diatur ke jumlah pass yang dilakukan.

Ketika parameter ini diatur ke NULL, jumlah lolos defragmentasi online tidak terbatas.

pcSeconds

Saat memulai tugas defragmentasi online, parameter input opsional ini mengatur waktu maksimum untuk defragmentasi. Saat menghentikan tugas defragmentasi online, buffer output opsional ini diatur ke lamanya waktu yang digunakan untuk defragmentasi.

Ketika parameter ini diatur ke NULL atau jika pcSeconds menunjuk ke nilai negatif, waktu maksimum untuk defragmentasi tidak terbatas.

Callback

Fungsi panggilan balik yang dipanggil defragmentasi secara teratur untuk melaporkan kemajuan.

grbit szTableName
JET_bitDefragmentBTreeBatch Harus berupa NULL.
JET_bitDefragmentBTree Harus berupa NULL.
Lain Pilihan.

grbit

Sekelompok bit yang menentukan nol atau beberapa opsi berikut.

Nilai

Makna

JET_bitDefragmentAvailSpaceTreesOnly

Opsi ini digunakan untuk mendefragmentasi bagian ruang yang tersedia dari alokasi ruang database ESE. Ruang database dibagi menjadi dua jenis, ruang yang dimiliki dan ruang yang tersedia. Ruang yang dimiliki dialokasikan ke tabel atau indeks sementara ruang yang tersedia siap digunakan dalam tabel atau indeks, masing-masing. Ruang yang tersedia jauh lebih dinamis dalam perilaku dan membutuhkan defragmentasi online lebih dari ruang atau tabel atau data indeks yang dimiliki.

JET_bitDefragmentBatchStart

Opsi ini digunakan untuk memulai tugas defragmentasi baru.

JET_bitDefragmentBatchStop

Opsi ini digunakan untuk menghentikan tugas defragmentasi mulai yang ada.

JET_bitDefragmentBTree

Opsi ini digunakan untuk men-defrag B-Tree, yang ditentukan oleh szTableName.

JET_bitDefragmentBTreeBatch

Opsi ini digunakan untuk memanggil OLD2 di seluruh 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_errClientRequestToStopJetService

Tidak dimungkinkan untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService.

JET_errDatabaseFileReadOnly

Database yang dipilih untuk defragmentasi hanya baca dan tidak dapat diperbarui dengan cara apa pun, termasuk defragmentasi.

JET_errDistributedTransactionAlreadyPreparedToCommit

Sesi yang diberikan disiapkan untuk menerapkan status, dan tidak dapat memulai pembaruan baru sampai transaksi saat ini dilakukan atau digulung balik.

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_errInvalidDatabaseId

ID database yang diberikan tidak cocok dengan database yang diketahui dalam instans.

JET_errNotInitialized

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi.

JET_errRestoreInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi.

JET_errSessionSharingViolation

Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru.

JET_errTermInProgress

Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan.

JET_errTransReadOnly

Sesi yang diberikan hanya memiliki hak istimewa baca-saja dan tidak dapat memulai tugas yang dapat melakukan pembaruan, termasuk defragmentasi.

JET_errVersionStoreOutOfMemory

Kesalahan ini akan terjadi ketika ukuran penyimpanan versi yang dikonfigurasi tidak cukup untuk menahan semua pembaruan yang luar biasa.

JET_wrnDefragAlreadyRunning

Opsi JET_bitDefragmentBatchStart telah diteruskan tetapi tugas defragmentasi sudah menjalankan defragmentasi pada database yang diberikan.

JET_wrnDefragNotRunning

Opsi JET_bitDefragmentBatchStop telah diteruskan, tetapi tidak ada tugas defragmentasi yang saat ini berjalan.

Jika berhasil, tindakan yang diminta untuk memulai tugas defragmentasi untuk data tertentu dengan opsi tertentu dilakukan, atau tindakan menghentikan tugas defragmentasi yang ada dilakukan.

Jika gagal, tindakan yang diminta untuk memulai atau menghentikan pekerjaan defragmentasi online tidak dilakukan. Tidak ada efek samping lain yang terjadi.

Keterangan

Defragmentasi online dikendalikan baik oleh pengaturan parameter, maupun oleh API ini. Nilai parameter sistem default adalah JET_OnlineDefragAll, yang berarti defragmentasi diaktifkan untuk semua struktur data yang didukung. Namun, menggunakan JetSetSystemParameter, dimungkinkan untuk menonaktifkan defragmentasi online, atau secara selektif mengaktifkannya hanya untuk pohon ruang database, database saja, file streaming saja atau kombinasi opsi ini. Jika pengaturan sistem untuk defragmentasi on-line adalah ke pengaturan usang, JetDefragment2 akan memperlakukan pengaturan sebagai JET_OnlineDefragAll.

Paling banyak ada satu tugas yang berjalan untuk setiap database. Tugas berjalan sebagai utas dalam proses hosting ESE.

Sesi yang digunakan untuk memulai tugas defragmentasi online kemudian dapat digunakan untuk operasi database sementara tugas defragmentasi berlanjut, karena tugas defragmentasi mengalokasikan sesinya sendiri. Sesi yang diberikan hanya digunakan untuk memeriksa izin yang terkait dengan sesi mulai tugas dan sebenarnya tidak digunakan untuk operasi defragmentasi 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

Gunakan ESENT.lib.

DLL

Membutuhkan ESENT.dll.

Unicode

Diimplementasikan sebagai JetDefragment2W (Unicode) dan JetDefragment2A (ANSI).

Lihat juga

JET_ERR
JET_SESID
JetCompact
JetDefragment
JetSetSystemParameter
JetStopService