Log Dosyasının Truncate ya da Shrink Olmaması ve Diski Doldurması Durumu(CDC)
Normal şartlarda full recovery model veritabanınızda düzenli olarak log backup alıyorsanız, alınan her log backup’tan sonra sql server log dosyasını truncate eder ve bu şekilde log dosyasının büyümesi engellenmiş olur.
Eğer veritabanınızda CDC(Change Data Capture) enable edildiyse aldığınız log backuplar sonrasında log dosyası truncate olmayacak ve disklerinizi doldurmaya başlayacaktır.
Change Data Capture hakkında detaylı bilgi almak için “Change Data Capture(CDC)” isimli makaleyi okumak isteyebilirsiniz.
Normalde başka koşullarda da log dosyası backup aldıktan sonra truncate olmayabilir. Log dosyasının neden truncate olmadığını aşağıdaki sorgu yardımıyla öğrenebiliriz.
USE mydatabase GO select log_reuse_wait_desc from sys.databases where database_id=DB_ID()
Eğer sonuç olarak “LOG_BACKUP” geliyorsa veritabanının log backup’ı alınmamış demektir. Log dosyasını shrink etmek için log bakcup almalısınız. Eğer full recovery model kullanıyorsanız düzenli olarak log backup almak için bir job oluşturmalısınız. “Veritabanı Recovery Modelleri” isimli makalemi okumak isteyebilirsiniz.
Eğer sonuç olarak “replication” geliyorsa ve veritabanı üzerinde herhangi bir replication yapılmamışsa bu veritabanınızda CDC’nin enable edildiği anlamına gelir.
Eğer sonuç olarak “ACTIVE_TRANSACTION” geliyorsa “Always ON’daki Primary Veritabanının Log Dosyasının ACTIVE_TRANSACTION Nedeniyle Dolması” isimli makaleyi okumalısınız.
CDC’yi disable etmek için aşağıdaki komutu kullanmalısınız.
USE mydatabase GO EXEC sys.sp_cdc_disable_db GO
CDC’yi disable ettikten sonra bir süre log dosyasını shrink edemeyeceksiniz.
Bunun sebebi CHECKPOINT işleminin henüz gerçekleşmemesidir.
CHECKPOINT işlemi gerçekleştiğinde log_reuse_wait_desc kolonunda nothing yazacaktır ve log dosyası shrink edilebilir hale gelecektir.
CHECKPOINT işleminin detaylarını “Database Checkpoint Nedir” isimli makalemde bulabilirsiniz.
Eğer log dosyasında oluşan problemi önceden tespit edip gerekli önlemleri almak isterseniz “SQL Server Log Dosyası Problem Tespiti” isimli makaleyi okumanızı tavsiye ederim.