Spasi yang digunakan tabel tidak sepenuhnya dirilis setelah Anda menggunakan pernyataan DELETE untuk menghapus data dari tabel di SQL Server


Bug #: 219514 (SQL Server 8,0)

Gejala


Setelah Anda menggunakan pernyataan DELETE di Microsoft SQL Server untuk menghapus data dari tabel, Anda mungkin melihat bahwa ruang yang digunakan tabel tidak sepenuhnya dirilis. Saat Anda mencoba menyisipkan data dalam database, Anda mungkin menerima pesan kesalahan berikut:
Tidak dapat mengalokasikan ruang untuk objek 'NamaTabel' dalam database 'databasename' karena FILEGROUP ' utama ' penuh.
Catatan NamaTabel mewakili nama tabel. Databasename mewakili nama database yang berisi tabel.

Penyebab


Masalah ini terjadi karena SQL Server hanya melepaskan semua halaman yang digunakan tabel timbunan jika kondisi berikut ini benar:
  • Penghapusan pada tabel ini terjadi.
  • Kunci tingkat tabel sedang dilangsungkan.
Catatan Tabel timbunan adalah tabel yang tidak terkait dengan indeks kluster. Jika halaman tidak memiliki deallocated, objek lain dalam database tidak dapat menggunakan ulang halaman. Namun, saat Anda mengaktifkan tingkat isolasi berbasis penerapan versi di database SQL Server 2005, halaman tidak bisa dilepaskan meskipun kunci tingkat tabel sedang dilangsungkan. Untuk informasi selengkapnya tentang tingkat isolasi berbasis penerapan versi baris, lihat topik "menggunakan tingkat isolasi berbasis penerapan versi" di buku daring SQL Server 2005.

Penyelesaian Masalah


Untuk mengatasi masalah ini, gunakan salah satu metode berikut ini:
  • Sertakan petunjuk TABLOCK dalam pernyataan Hapus jika baris tingkat isolasi berbasis pembuatan versi tidak diaktifkan. Misalnya, gunakan pernyataan yang mirip dengan yang berikut ini:
    DELETE FROM <TableName> WITH (TABLOCK)
    Catatan<namatabel> mewakili nama tabel.
  • Gunakan pernyataan memotong tabel jika Anda ingin menghapus semua rekaman dalam tabel. Misalnya, gunakan pernyataan yang mirip dengan yang berikut ini:
    TRUNCATE TABLE <TableName>
  • Membuat indeks tergugus pada kolom tabel. Untuk informasi selengkapnya tentang cara membuat indeks tergugus pada tabel, lihat topik "membuat indeks Tergugus" di buku daring SQL Server.

Status


Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".