Saya memiliki database yang memiliki file data 350 MB (.mdf) dan file log 4,9 GB (.ldf). Model pemulihan diatur ke FULL
.
Ketika saya mencoba mengecilkan file log, itu tidak menyusut.
Saya tahu menyusutkan database tidak baik dan tidak boleh dilakukan. Tetapi saya masih mencoba melakukannya untuk menyusutkan file log.
Ketika saya berlari
DBCC SQLPerf(logspace)
Saya menemukan bahwa ukuran log adalah 4932 MB dan ruang Log yang digunakan adalah 98,76% !
Kemudian saya mencoba perintah ini
USE <databasename>;
DBCC loginfo;
Sekarang hampir semua VLF adalah "status 2" yang berarti semua sedang digunakan.
Saya mencoba untuk mengambil cadangan log dan kemudian mengecilkan file log. Menyusut tidak mengurangi ukuran.
Saya mengubah model pemulihan SIMPLE
dan mencoba menyusut lagi, tetapi ini juga tidak membantu.
Saya memeriksa transaksi terbuka
DBCC opentran (database);
dan menemukan bahwa tidak ada transaksi yang terbuka sekarang.
Apa yang menghentikan saya dari menyusutkan file log? Bagaimana saya bisa memecahkan masalah ini?
sumber
log_reuse_wait_desc
memberiACTIVE_TRANSACTION
. Begitu transaksi selesai, psikiater itu bekerja dengan baik.Langkah-langkah untuk menyusutkan log akan dilakukan
Cadangan log transaksi melalui SSMS atau T-SQL dan kemudian lakukan penyusutan
perintah untuk SSMS berada di bawah tugas jika Anda mengklik kanan nama database
Anda mungkin harus melakukan ini beberapa kali
Jika ada transaksi atau pekerjaan yang memblokir tindakan, gunakan Monitor aktivitas untuk mengidentifikasi proses dan mematikannya, atau gunakan monitor aktivitas kerja Agen SQL untuk mengakhiri pekerjaan.
sumber: http://support.microsoft.com/kb/907511
sumber
Baca Cara Mengecilkan log SQL Server untuk penjelasan bagaimana sifat melingkar dari log dapat mencegah menyusut setelah pemotongan. Mungkin saja Anda mencatat titik LSN terakhir ke dalam VLF yang ada di ujung LDF. Penghitung secara intuitif Anda harus memajukan log, dengan menghasilkan log menulis, untuk memungkinkan menyusut.
sumber
Anda harus membuat cadangan terlebih dahulu, tergantung pada model cadangan yang diatur untuk basis data sebelum Anda dapat mengecilkan basis data.
Anda dapat mencoba menjalankan ini:
Atau Anda dapat melakukannya dari SSMS dan menggunakan alat grafis yang tersedia (lihat di sini untuk detail: http://msdn.microsoft.com/en-us/library/ms187510.aspx )
Setelah membuat cadangan basis data, Anda dapat mengompresnya. Namun, menyusutkan database bukanlah ide yang baik karena fragmentasi indeks yang berat akan terjadi dan pencarian data akan menjadi lambat.
Semoga ini membantu.
sumber
Saya telah menemukan bahwa saya harus melakukan 2 atau 3 backup dari database dan log transaksi untuk mendapatkan log transaksi untuk benar-benar mengurangi ukurannya. Saya memiliki database yang dibuat dengan model pemulihan penuh. Setiap malam ia melakukan backup database dan log transaksi tetapi log transaksi tampaknya terus tumbuh selama 2-3 minggu. Ketika ruang disk yang tersisa mencapai 1GB saya akan melihat bahwa log transaksi sekitar 30GB. Saya mengikuti langkah-langkah yang direkomendasikan oleh Microsoft dan setelah iterasi ke-4 atau ke-5 mencadangkan basis data dan log transaksi, log transaksi akhirnya akan melepaskan ruang ekstra dan menyusut. Lalu saya kembali dan menghapus beberapa cadangan yang telah saya buat.
sumber
Pekerjaan saya untuk Replikasi yang memblokir menyusut file log adalah:
Dalam kasus saya ini berhasil. Setelah membawa DB log online dibuat secara otomatis dan ukurannya adalah 512kb, bukan 70GB. Tapi ini hanya solusi. Masalah root tidak terselesaikan. Dalam kasus saya, kami menggunakan replikasi.
sumber