Microsoft SQL Server'da yeni bir veritabanı oluşturduğunuzda, eğer varsayılan ayarları değiştirmemişseniz iki tane dosya oluşturulur. Bunlardan birinin uzantısı .mdf, diğerininki ise .ldf olur. MDF dosyaları veritabanında o anda kayıtlı olan bilgileri saklarken, LDF dosyası ise veritabanındaki kayıtlar üzerinde ne zaman hangi değişikliğin yapıldığını saklar.
LDF dosyasında saklanan işlem günlüğü bilgisi bize yedekten geri yükleme yaparken geçmişteki istenilen herhangi bir zamana dönebilme imkânı sağlar.
Meselâ her gece 03:00'da Full Backup alıyorsanız, bu yedek ile veritabanını o saatteki hâline tam olarak eksiksiz bir şekilde döndürebilirsiniz. Ancak akşam 17:15'teki hâline döndürebilmeniz mümkün olmaz.
Eğer Full Backup'ın yanı sıra Transaction Log Backup da alırsanız, bu yedek gece 03:00'da alınmış olsa bile, veritabanını örneğin 17:15'teki hâline döndürebilirsiniz. Çünkü Transaction Log'da hangi işlemin hangi anda yapıldığı bilgisi saklanmaktadır.
Yeni bir veritabanı oluşturduğunuzda yedekleme modeli varsayılana olarak Full Recovery Model olur. Bu modelde, Transaction Log Backup alınmadığı sürece LDF dosyası büyüdükçe büyür. Çünkü veritabanı üzerinde yapılan her işlem bu dosyaya kaydedilmektedir. Ancak Transaction Log Backup aldığınızda LDF dosyasının içindeki işlem bilgileri silinir ve boyutu sıfırlanır. Sıfırlanır derken 0 bayt olur demek istemiyorum. Veritabanını ilk oluşturduğunuz zamanki boyutuna döner.
Eğer yedeğin alındığı saate dönebilmek yeterli derseniz (ki bence böyle demeyin), Transaction Log bilgisine ihtiyacınız yok demektir. Bu bilgilerin saklanmaması için veritabanınızı Full Recovery Model'den Simple Recovery Model'e geçirmeniz gerekir.
Full Recovery Mode'da kalayım, dolayısıyla istediğim herhangi bir ana geri dönebileyim, ama LDF dosyam da küçük kalsın derseniz, bu durumda Full Backup'ın yanı sıra düzenli olarak Transaction Log Backup da almanız gerekir. Yukarıda da bahsettiğim gibi, Transaction Log Backup alınınca LDF dosyasının içi boşaltılır.
Veritabanlarının recovery modelinin ne olduğunu görmek için şu sorguyu çalıştırabilirsiniz:
SELECT name, recovery_model_desc FROM sys.databases
Veritabanının recovery modelini Simple Mode'a geçmek için şu sorguyu çalıştırabilirsiniz:
USE master; ALTER DATABASE veritabani_adi SET RECOVERY SIMPLE;
Simple Mode'a geçince LDF dosyası kendiliğinden küçülmez. Yedekleme modunu değiştirdikten sonra LDF dosyasının boyutunu küçültmek için bir seferlik Shrink Database yapmak gerekir. Shrink Database yapmak için aşağıdaki sorguyu çalıştırabilirsiniz:
DBCC SHRINKDATABASE (veritabani_adi);