Sql Server veritabanları ile çalışırken veritabanına bağlı .ldf uzantılı log dosyalarının zamanla boyutunun büyüdüğünü ve şiştiğini izlerim. Fakat bir gün önceki çalışmamda 100 MB lık mdf veritabanıma bağlı ldf log dosyasının boyutunun 2,5 GB ‘a kadar çıktığını gördüm :!
Bu log dosyasının nasıl temizlenebileceği yada silinebileceği konusunda başladık Google ile aramaya..
Tabi bu aramadan önce ben Shrink Database/Files yöntemlerini, dosya boyutuna Autogrowth ile limit belirleme işlemlerini filan baya denedim ama beceremedim yada SqlServer tarafından izin verilmedi.
Sonunda Google üzerinde aramada Yasemin Avcular‘ın blogundaki “How to delete .log file in SQL Server 2008” başlıklı yazıda çözüm bulabildim.
Anlatım için yazının devamına bakabilirsiniz.
! Anlatıma başlamadan önce her ihtimale karşı dosyalarının yedeğini almanızı öneririm.
Yasemin Avcular buradaki çözümü şöyle sağlamış;
- İlk önce veritabanımızı Sql Server üzerinden “Detach Database” işlemi ile ayırıyoruz.
- Veritabanı log dosyamızı (.ldf uzantılı olan) siliyoruz.
- Veritabanımızı Sql Server üzerinde “Attach Database” işlemi ile tekrar bağlıyoruz. Veritabanını bağlıyor fakat bize bağlarken log(.ldf) dosyasının bulunamadığını ve yeni bir tane oluşturduğu mesajını veriyor.
- Son olarak yine aynı durumu yaşamamak için Log(.ldf) dosyamızı AutoGrowth ile limitlendirmemizi tavsiye ediyor.
Hepsi bu kadar. Şimdi aşağıdaki örneği inceleyebilirsiniz.
Çözümü T-Sql ile yapabiliyoruz. Örnek veritabanımızın adı “dbORNEK” olsun ve C:\Data\dbORNEK.mdf yolunda bulunduğunu varsayalım.
--ADIM 1: Veritabanını Detach yapıyoruz USE master; GO sp_detach_db 'dbORNEK'; GO --ADIM 2: Veritabanını Attach yapıyoruz. USE master; GO sp_attach_db 'dbORNEK', 'C:\DATA\dbORNEK.mdf'; GO
Herkese iyi çalışmalar.
tesekkr ederm. Anlatım için fakat bir sorunum var. Sql server 2008 kullanıyrm. Detach yapıp log dosyasını sildikten sonra tekrar attach yapmaya calıstıgmda sizin dediginiz gibi log dosayası yok olusturdm gibi bi msj vermeden Log dosyası bulunamadı diye hata verdi ve attach işlemini yapmadı. Sorunu nasıl çözebilirm? Yardmcı olursanz sevnrm.