Dosya yönetiminiz tamamen çevrimiçi bir işlem olabilir. Kurtarma amacıyla günlük bilgilerinizi saklama gereksiniminize bağlı olarak iki yolunuz vardır:
Zamanında kurtarma gerekli değildir
- Veritabanını
SIMPLE
kurtarmaya dönüştürün . İşlemleri diske yazmak için bir kontrol noktası yürütün.
- Günlüğü düzleştirin.
- Günlüğü uygun boyuta yeniden boyutlandırın.
Ayrıca sabit bir büyüme miktarı ve sınırsız büyüme (günlüğünüzü daha iyi yönetmenize yardımcı olacak şekilde) ayarlamanızı da öneririm. Sabit büyüme miktarı çok miktarda bağlıdır, başlangıçta bu günlük ne kadar büyüme görmeyi bekleyebilirsiniz bağlı olarak 1-2 GB ile devam etmenizi tavsiye ederim. İdeal olarak, günlüğünüz çok fazla büyümeyecektir, bu yüzden çok fazla bir etkisi olmamalıdır. Günlüğünüz düzenli olarak büyüyorsa, boyutunuzu tekrar gözden geçirmeniz gerekebilir.
Kullanılarak başarılı:
ALTER DATABASE [foo]
SET RECOVERY SIMPLE;
CHECKPOINT;
DBCC SHRINKFILE (foo_log,0);
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
--Optional if you want the database in full recovery mode
--for point in time recovery going forward
ALTER DATABASE [foo]
SET RECOVERY FULL;
Zamanında kurtarma gerekiyor
En büyük askıya alma, günlük dosyanızı etkin olan VLF segmentinizin ötesine daraltamayacağınızdır. Bunu görmek DBCC LOGINFO
için veritabanı bağlamında kullanabilirsiniz. Status = 2 olan tüm segmentler etkindir. Etkin segmentleri temizlemek için, o segmentte aktif olan hiçbir işlem olmadığında bir işlem günlüğü yedeklemesi çalıştırmanız gerekir. Adımlarınız:
- Bir işlem günlüğü yedeklemesi çalıştırın.
- Dosyanızı küçültün. (İdeal olarak düzleştirin, ancak veritabanınız aktifse bunu yapmak zor olacaktır).
- Günlüğünüz uygun bir boyut olana ve ideal olarak mümkün olduğunca küçük olana kadar 1. ve 2. adımları tekrarlayın.
- Günlüğü uygun boyuta yeniden boyutlandırın.
Kullanılarak başarılı:
BACKUP LOG [foo] TO DISK='<Location of t-log backup>';
DBCC SHRINKFILE (foo_log,0);
--Repeat the above until your log file is small "enough"
ALTER DATABASE [foo]
MODIFY FILE (NAME=foo_log,SIZE=8000MB,MAXSIZE=UNLIMITED,FILEGROWTH=1000MB);
Burada neler olduğunu anlamak için bazı ek kaynaklar: