SQL Server Database Log Dosyasını Temizlemek


Merhaba

Daha önceki yazilarimizda Microsoft SQL Server 2014 Kurulumu,Microsoft SQL Server 2012 Kurulumu,Windows Server 2012 Üzerinde Microsoft SQL Server 2012 Failover Cluster Kurulumu ve Windows Server 2012 R2 Üzerinde Microsoft SQL Server 2014 Failover Cluster Kurulumu ve yapılandırmasini sizlerle paylaştim. Daha sonraki yazilarimizda SQL Server Management Studio ile Backup Alma ve SQL Server Management Studio ile Restore İşlemi anlatmiştim. Bu yazımda SQL Server Transaction Log dosyası temizleyi anlatiyor olacağım.

SQL Server oluşturulan Database dosyarinin zamanla dikkat edilmesi gereken en önemli sorunlarindan biri Database boyutlarinin ilerde alabileceği boyuttur. SQL Server üzerinde bir Database oluşturulduğunda .mdf uzantılı Database dosyası ve .ldf uzantılı Transaction Log dosyası oluşturmaktadir. Transaction Log dosyası Database üzerinde yapılan işlemlerin ilk yazıldığı ve gerçekleşen işlemlerin ( Select, Insert vb. ) yer aldığı bir dosyadır. Database dosyasinin doğru hesaplanmadığı sistemlerde bir süre sonra sunucunuz üzerinde ve aldiğiniz Backup ( Yedek ) dosyalarinizin kaplayacaği disk alanlarinda sorun yaşabilirsiniz. Özellikle Transaction Log dosyasinin boyutu nedeniyle yaşayacağınız disk boyutu sorunlarini çözümü içinse uygulanacak yöntemlerden bir tanesi Transaction Log dosyasının temizlenmesidir. Bu yazimizda Transaction Log dosyasinin nasil temizlendiğini anlatiyor olacağız ancak burada yapacağımız işlem sirasinda Transaction Log dosyasini temizleyeceğimiz Database dosyasinin SQL Server üzerinde Connect olmamasi gerekmektedir.

NOT : Bu işlemleri yapmadan önce daha önce paylaştiğim SQL Server Management Studio ile Backup Alma işlemini yapmanizi öneririm.

BAKICUBUK isminde Database üzerindeki .mdf ve .ldf uzantılı dosyalar aşağıdaki gibi görülmektedir.

21-07-2015 16-10-41

SQL Server Management Studio konsolu açıyoruz ve BAKICUBUK isminde Database aşağıdaki gibi görmekteyiz.

21-07-2015 16-11-22

Transaction Log dosyasini temizleyeceğimiz Database dosyasinin SQL Server üzerinde Connect olmamasini söylemiştim bu yüzden SQL Server Management Studio konsolunda Database üzerinde sağ tuş Tasks–> Detach seçeneğine tıklıyoruz.

21-07-2015 16-11-49

Detach Database ekrani geliyor karşımıza bu ekranda herhangi bir değişiklik yapmadan OK diyoruz ve Database dosyasini Disconnet yapıyoruz.

21-07-2015 16-22-01

SQL Server Management Studio konsolunda Databases bölümünü kontrol ettğimizde Database dosyasini Disconnet olduğunu görüyoruz.

21-07-2015 16-22-37

C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA dizini altinda bulunan Transaction Log dosyası Cut ( Kes ) yaparak başka bir dizin altina Paste ( Yapıştır ) diyerek Backup ( Yedek ) olarak aliyoruz. Eski Transaction Log dosyasini direkt olarak silmek yerine herhangi bir sorun ile karşı karşıya kalmamak için ve Backup ( Yedek ) olmasi amaciyla bu şekilde bir işlem yapıyoruz. Eğer Transaction Log temizle işlemi başarili bir şekilde gerçekleştirirsek ve Database sorunsuz bir şekilde çalışırsa o zaman eski Transaction Log dosyasini silebilirsiniz. Bu işlemleri yapmadan önce daha önce paylaştiğim SQL Server Management Studio ile Backup Alma işlemini yapmanizi öneririm. Ben eski Transaction Log dosyasini C:\LOG_BACKUP dizini altina kopyaliyorum.

21-07-2015 16-29-56

21-07-2015 16-44-07

Eski Transaction Log dosyasini Backup aldiktan sonra Database dosyasini tekrar Connect yapmak için SQL Server Management Studio konsolunda Databases üzerinde sağ tuş Attach… diyerek Databasemizi tekrar connect olmasini ve çalışmasini sağlıyoruz.

21-07-2015 16-45-47

Attach Databases ekraninda Add diyerek Databasemizi ekleme işlemine başlatiyoruz.

21-07-2015 16-46-33

Locate Database Files ekraninda Database bulunduğu dizini gösteriyoruz ve .mdf uzantili Database dosyamizi seçerek OK diyoruz. Benim Database dosyasi Default dizin olan C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA altinda olduğu için bu dizin altindan seçtim eğer sizin yapinizda farkli bir dizin altinda ise o dizin altindan seçebilirsiniz.

21-07-2015 16-48-19

Attach Databases ekraninda .mdf uzantili Database dosyasi eklendi ancak .log uzantili Transaction Log dosyasinin Message bölümünde Not Found yani Transaction Log dosyasının bulanamadığını belirten bir mesaj geldiğini görüyoruz. Çünkü Transaction Log dosyasını daha önce bulunduğu dizinden başka bir yere taşıdık. Transaction Log dosyasının olmadığı uyarısı önemsemeyerek OK diyoruz.

21-07-2015 16-48-54

Attach işlemi tamamlanamaz gibi bir hata mesajı alıyoruz.

21-07-2015 16-49-18

Attach işlemine devam edebilmek için Transaction Log dosyasını bulunduğu satırı seçiyoruz ve Remove diyoruz.

21-07-2015 16-50-17

Transaction Log dosyasının bulunduğu satırın silindiğini görüyoruz. Aslinda bizimde yapmak istediğimiz yeni bir Transaction Log dosyası oluşturulması ve bu şekilde Database bağlı olarak çalışan Transaction Log dosyasinin temizlenmesiydi. OK diyerek Attach işlemini tamamliyoruz.

21-07-2015 16-51-04

SQL Server Management Studio konsolunda Databases altina BAKICUBUK isminde Database geldiği görülmektedir.

21-07-2015 16-51-33

Database dosyasi Default dizin olan C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA dizini kontrol ettiğimiz yeni Transaction Log dosyasının oluştuğunu ve boyutunun küçükdüğünü görüyoruz.

21-07-2015 16-52-12

 

Başka bir yazimizda görüşmek dileğiyle…