Menyusut memang berbahaya karena alasan yang disebutkan di sini. Ada media bahagia antara jawaban Jimbo dan jawaban John ... Anda harus selalu mempertimbangkan dengan serius apakah Anda ingin mengecilkan database Anda atau tidak.
Di dunia yang ideal - Anda akan menciptakan DB dengan banyak ruang bebas untuk berkembang. Saya menyebut ini "Ukuran Benar" database Anda. Anda akan membiarkan ruang kosong ini ada di sana dan tidak berusaha untuk mengembalikannya dan menjaga ukuran total Anda tepat pada ukuran yang Anda gunakan .. Mengapa? Karena database Anda pada akhirnya akan tumbuh lagi .. Kemudian Anda akan menyusut lagi .. Dan Anda akan terjebak dalam pola menyusut tidak berguna yang diikuti oleh pertumbuhan - dan sepanjang waktu, seperti yang telah ditunjukkan beberapa orang, Anda akan meningkatkan fragmentasi indeks Anda.
Saya telah membuat blog tentang hal ini di mana saya menasihati orang-orang untuk " Jangan sentuh tombol menyusut itu! " Tapi kadang-kadang ... Kadang-kadang Anda perlu. Jika Anda memiliki database besar, hanya membebaskan ruang yang signifikan dan jangan berharap untuk tumbuh kembali ke dalamnya - yah, maka boleh saja untuk mempertimbangkan penyusutan sebagai operasi satu kali selama Anda dapat mengurus fragmentasi indeks Anda kemudian melalui pembangunan kembali mereka. Operasi menyusut dapat memakan waktu sehingga Anda ingin merencanakannya untuk waktu di mana Anda dapat membayar harga penyusutan itu. Pendekatan membuat DB kosong dan menyalin data ke dalamnya berfungsi - tetapi itu bisa menjadi sangat sulit dengan database yang lebih besar dan banyak data.
Jika Anda berencana menambahkan ruang itu kembali ke DB melalui penggunaan normal dan pola pertumbuhan ke masa depan, maka Anda mungkin hanya ingin meninggalkan ruang di sana.
Juga
Anda bilang Anda "membersihkan" log transaksi Anda. Saya ingin tahu bagaimana Anda melakukan ini tetapi ketika Anda membaca posting yang saya bagikan dan yang lain dalam seri ini Anda akan melihat beberapa tips tentang manajemen log transaksi. Namun singkatnya - jika Anda berada dalam mode Pemulihan Penuh, Anda harus mengambil cadangan log biasa untuk menjaga agar log tersebut dapat digunakan kembali. Jika tidak - tanpa cadangan log saat dalam Mode Penuh - file log terus tumbuh dan tumbuh dan tumbuh dan selalu menyimpan apa yang telah Anda lakukan karena Anda memberi tahu SQL Anda tidak hanya ingin mempertahankan log itu untuk pemulihan kerusakan tetapi ingin menyimpan cadangan manual untuk memutar ulang transaksi / membatalkan transaksi untuk memulihkan ke titik waktu tertentu untuk tujuan pemulihan ... Jika Anda sederhana dan melihat log tumbuh berlebihan,BEGIN TRAN ... do work.... COMMIT TRAN
atau apakah Anda baru saja mengeluarkan satu DELETE
pernyataan besar dan menghapus seluruh kekacauan data dalam satu transaksi implisit.)
Saya juga berasumsi bahwa Anda mencari ruang kosong ini di sistem file Anda. Jika Anda mencari di dalam SQL dan di dalam file besar yang Anda miliki - bisa jadi Anda sedang menunggu pembersihan hantu untuk menyelesaikan jika mencari segera setelah operasi Anda. Paul Randal menulis blog tentang Pembersihan Hantu .