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.
Tingkat Lanjut: Membutuhkan keterampilan pengkodian pakar, interoperabilitas, dan multipengguna.
Artikel ini hanya berlaku untuk database Microsoft Access (.mdb).
Gejala
Saat Anda melakukan operasi pada tabel, Anda mungkin menerima pesan kesalahan berikut jika operasi membuat sejumlah besar kunci halaman: Ruang disk atau memori tidak cukup.
Jika Anda menjalankan kueri tindakan pada tabel besar, Anda mungkin menerima pesan kesalahan berikut: Ruang disk atau memori tidak cukup untuk mengurungkan perubahan data yang akan dilakukan kueri tindakan ini.
Penyebab
Kunci halaman yang diperlukan untuk transaksi melebihi nilai MaxLocksPerFile, yang defaultnya adalah 9500 kunci. MaxLocksPerFilesetting disimpan di registri Windows.
Resolusi
Penting
Bagian, metode, atau tugas ini berisi langkah-langkah yang memberi tahu Anda cara mengubah registri. Namun, masalah serius mungkin terjadi jika Anda salah memodifikasi registri. Oleh karena itu, pastikan Anda mengikuti langkah-langkah ini dengan hati-hati. Untuk perlindungan tambahan, buat cadangan registri sebelum Anda mengubahnya. Kemudian, Anda dapat memulihkan registri jika terjadi masalah. Untuk informasi selengkapnya tentang cara mencadangkan dan memulihkan registri, lihat Cara mencadangkan dan memulihkan registri di Windows.
Ada beberapa cara untuk mengatasi masalah ini:
- Anda dapat menggunakan Regedit.exe untuk mengedit registri dan mengubah MaxLocksPerFilevalue secara permanen.
- Anda dapat menggunakan SetOptionmethod objek DBEngine untuk mengubah MaxLocksPerFilevalue untuk sementara dalam kode.
- Jika kesalahan terjadi saat Anda menjalankan kueri tindakan, Anda dapat mengubah kueri dan mengatur UseTransactionproperty ke Tidak.
Metode 1: Mengubah MaxLocksPerFile di registri
Gunakan Editor Registri untuk meningkatkan nilai MaxLocksPerFile di bawah kunci berikut:
Untuk Microsoft Access 2000, di Microsoft Access 2002, dan di Microsoft Office Access 2003 yang berjalan pada sistem operasi Windows 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Jet 4.0
Untuk Microsoft Access 2000, di Microsoft Access 2002, dan di Microsoft Office Access 2003 yang berjalan pada sistem operasi Windows 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Jet 4.0
Untuk Microsoft Office Access 2007 yang berjalan pada sistem operasi Windows 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Office Access 2007 yang berjalan pada sistem operasi Windows 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Access 2010 yang berjalan pada sistem operasi Windows 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Office Access 2010 yang berjalan pada sistem operasi Windows 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Access 2013 yang berjalan pada sistem operasi Windows 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Office Access 2013 yang berjalan pada sistem operasi Windows 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Access 2016 yang berjalan pada sistem operasi Windows 32-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE
Untuk Microsoft Office Access 2016 yang berjalan pada sistem operasi Windows 64-bit:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Access Connectivity Engine\Engines\ACE
Perhatikan bahwa metode ini mengubah pengaturan registri untuk semua aplikasi yang menggunakan mesin database Microsoft Jet versi 4.0.
Metode 2: Menggunakan SetOption untuk mengubah MaxLocksPerFile Untuk Sementara
Nota
Kode sampel dalam artikel ini menggunakan Objek Akses Data Microsoft. Agar kode ini berjalan dengan benar, Anda harus mereferensikan Pustaka Objek Microsoft DAO 3.6. Untuk melakukannya, pilih Referensi pada menu Alat di Visual Basic Editor, dan pastikan bahwa kotak centang Pustaka Objek Microsoft DAO 3.6 dipilih.
Microsoft menyediakan contoh pemrograman hanya untuk ilustrasi, tanpa jaminan yang dinyatakan atau tersirat. Ini termasuk, tetapi tidak terbatas pada, jaminan tersirat dari kelayakan untuk diperdagangkan atau kesesuaian untuk tujuan tertentu. Artikel ini mengasumsikan bahwa Anda terbiasa dengan bahasa pemrograman yang ditunjukkan dan dengan alat yang digunakan untuk membuat dan men-debug prosedur. Teknisi dukungan Microsoft dapat membantu menjelaskan fungsionalitas prosedur tertentu, tetapi mereka tidak akan memodifikasi contoh-contoh ini untuk menyediakan fungsionalitas tambahan atau prosedur konstruksi untuk memenuhi persyaratan spesifik Anda. Metode ini SetOption
untuk sementara mengambil alih nilai untuk kunci mesin database Microsoft Jet di registri. Nilai baru tetap berlaku sampai Anda mengubahnya lagi, atau sampai objek DBEngine ditutup.
Nota
Perubahan yang dilakukan pada pengaturan MaxLocksPerFile dengan menggunakan metode SetOption
ini hanya tersedia melalui sesi saat ini dari Objek Akses Data (DAO). Kueri yang dijalankan melalui antarmuka pengguna Microsoft Access masih menggunakan pengaturan di registri.
Sampel kode berikut menetapkan MaxLocksPerFile ke 200.000 sebelum menjalankan operasi pembaruan di dalam transaksi:
Sub LargeUpdate()
On Error GoTo LargeUpdate_Error
Dim db As DAO.Database, ws As DAO.Workspace
' Set MaxLocksPerFile.
DBEngine.SetOption dbMaxLocksPerFile, 200000
Set db = CurrentDb
Set ws = Workspaces(0)
' Perform the update.
ws.BeginTrans
db.Execute "UPDATE BigTable SET Field1 = 'Updated Field'", _
dbFailOnError
ws.CommitTrans
db.Close
MsgBox "Done!"
Exit Sub
LargeUpdate_Error:
MsgBox Err & " " & Error
ws.Rollback
MsgBox "Operation Failed - Update Canceled"
End Sub
Metode 3: Mengatur properti UseTransaction dalam kueri tindakan
Jika kueri tindakan tersimpan menyebabkan kesalahan, Anda bisa mengatur propertinya UseTransaction
ke Tidak.
Catatan: Jika Anda melakukannya, Anda tidak dapat mengembalikan perubahan jika ada masalah atau kesalahan saat kueri sedang berjalan.
- Buka kueri dalam tampilan Desain.
- Pada menu Tampilan, pilih Properti.
- Pilih ruang kosong di bagian atas jendela kueri untuk menampilkan kotak dialog Properti Kueri.
- Atur UseTransactionproperty ke Tidak.
- Simpan kueri dan tutup.
Informasi selengkapnya
MaxLocksPerFilesetting
dalam registri mencegah transaksi di mesin database Microsoft Jet melebihi nilai yang ditentukan. Jika transaksi mencoba membuat kunci melebihi nilai MaxLocksPerFile, transaksi tersebut akan dibagi menjadi dua atau lebih bagian dan dilakukan sebagian.
Langkah-langkah untuk mengulangi masalah
Contoh berikut menggunakan prosedur Visual Basic untuk membuat tabel dengan 10.000 rekaman di dalamnya, lalu memodifikasi tabel untuk menyebabkan pesan kesalahan:
- Buka contoh database Northwind.mdb.
- Buat modul, lalu ketik prosedur berikut:
Sub CreateBigTable()
Dim db As Database, rs As Recordset
Dim iCounter As Integer, strChar As String
Set db = CurrentDb
db.Execute "CREATE TABLE BigTable (ID LONG, Field1 TEXT(255), " & _
"Field2 TEXT(255), Field3 TEXT(255), Field4 TEXT(255))", _
dbFailOnError
Set rs = db.OpenRecordset("BigTable", dbOpenDynaset)
iCounter = 0
strChar = String(255, " ")
While iCounter <= 10000
rs.AddNew
rs!ID = iCounter
rs!Field1 = strChar
rs!Field2 = strChar
rs!Field3 = strChar
rs!Field4 = strChar
rs.Update
iCounter = iCounter + 1
Wend
MsgBox "Done!"
End Sub
Untuk menjalankan prosedur, ketik baris berikut ini di jendela Segera, lalu tekan ENTER:
CreateBigTable
Prosedur ini membuat tabel yang disebut BigTable dengan 10.000 rekaman di dalamnya.
Simpan modul sebagai Module1, lalu tutup.
Buka tabel BigTable dalam tampilan Desain.
Ubah FieldSizeproperty dari Field4 menjadi 253.
Simpan tabel ini. Klik Ya saat Anda diminta bahwa beberapa data mungkin hilang.
Perhatikan bahwa, setelah beberapa saat, Anda menerima pesan kesalahan berikut:
Microsoft Access can't change the data type. There isn't enough disk space or memory.
Errors were encountered during the save operation. Data types were not changed. Properties were not updated.