Gerçekten .LDF dosyalarını tutmam gerekiyor mu?


9

Her ay üretim veri tabanımızın ay sonu fotoğrafını çekiyoruz. Bu ay sonu anlık görüntüleri kesinlikle raporlama amaçlıdır, bunlara yapılan ekler, güncellemeler veya silinmeler yoktur. Bu anlık görüntülerin her birinin bir .MDFve .LDFdosyası vardır.

.LDFDosyaları silmek ve sunucuda biraz yer açmak istiyorum. .LDFDosyaları saklamamın herhangi bir nedeni var mı?

Açıklama:

Üretim veritabanımız her gece başka bir sistemden alınan dosya özlerinden yeniden oluşturulur. Sadece üretim veritabanından rapor veriyoruz ... hiçbir güncelleme yapılmıyor.

Gece Süreci:
Ne söyleyebilirim ...
Her gece veri tabanı tabloları kesilir
Tablolar bir dizi toplu ekleme deyimleri ile doldurulur
Dizinler yeniden inşa edildi

Yanıtlar:


16

Günlük dosyasını silmemelisiniz. Bir veri dosyasını günlük olmadan yeniden bağlamaya çalışıyorsanız, SQL Server teknik olarak yeniden oluşturabilir, ancak veritabanı ayrıldığında açık işlemler varsa, birkaç olası sorun vardır. Bu durumda, toplam veri kaybınız olur.

Alanı boşaltın ve günlük dosyalarınızı silmeyin . Bununla ilgili sorun istiyorsun.

İşlem Günlükleri hakkındaki bu makaleye, özellikle "Günlük Yanlış Yönetimi" bölümüne bakın.


9

Başka bir cevapta belirtildiği gibi , günlük dosyasını silemezsiniz. Yapabileceğiniz şey veritabanını ayarlamaktır READ_ONLY. Veritabanı içerisindeyken READ_ONLYhiçbir değişikliğe izin verilmez ve günlük dosyası büyümez. Günlük dosyasının boyutunu minimum boyuta küçültebilir ve minimum yer kaplayan hedefinize ulaşabilirsiniz. Veritabanını ayarlamak için READ_ONLYaşağıdaki komutu çalıştırın:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

Veritabanını olarak değiştirebilir, READ_WRITEgerekli değişiklikleri yapabilir ve ardından READ_ONLYistediğiniz zaman ayarlayabilirsiniz .

Veritabanının ACID özelliklerini korumak için günlük dosyası yine de gereklidir.


2

Gerçek şu ki, sadece mdf dosyasını kullanarak bir veritabanı oluşturabilirsiniz. Bu sp_attach_single_file_db (Transact-SQL) komutudur. Microsoft SQL Server'ın gelecekteki bir sürümünde kaldırılacağını unutmayın. Ancak, LDF dosyalarınızı silmek akıllıca değildir. Köpekbalığı haklı 'Bununla ilgili sorun istiyorsun.' Başka bir bakış açısı - ldf dosyalarınız çok mu büyük? Eğer öyleyse, onlar hakkında bir şeyler yapabilirsiniz.

  1. Veritabanınızı Basit kurtarma modeline ayarlayın . Bunu yalnızca işlemleri geri almak istemiyorsanız yapabilirsiniz
  2. MDF ve LDF dosyaları yapmak yerine, tam bir veritabanı yedekleme (.BAK) dosyası oluşturun. MDF + LDF daha küçük olacak

-3

İşte LDF dosyalarını küçültmek için bulduğum çözüm.

  1. Veritabanını Ayır
  2. LDF dosyasını * _old.ldf olarak yeniden adlandırın
  3. Veritabanı Ekle
  4. Eksik LDF'ye ilişkin referansı kaldırın

Bu, boyutu 504K olan bir LDF dosyasını yeniden oluşturur.

  1. * _Old.ldf dosyasını sil
  2. Boş geri dönüşüm kutusu

Bu sunucudaki önemli miktarda disk alanını geri kazanmıştır. Bizim için işe yarar çünkü tüm bu veritabanları SADECE statik raporlama veritabanlarıdır. Bu veritabanlarına karşı hiçbir Ekleme, Güncelleme veya Silme işlemi gerçekleştirilmez.

GÜNCELLEME 2019-09-24: Evet, bunun gerçekten kötü bir fikir olduğuna katılıyorum. Bunu hemen yapmayı bıraktım. Ben 100 doldurma faktörü kullanarak tüm dizinleri yeniden var. Sadece .ldf dosyaları küçültmek. Ve tüm veritabanları SADECE OKU olarak değiştirildi.


6
Vay be, bu gerçekten kötü bir fikir. Veritabanı başarıyla ayrılmazsa veya 1 ile 3 arasında bir yerde kaybolur veya bozulursa ne olur? Sarhoşsun. Veritabanınızın SIFIR kopyaları var.
Aaron Bertrand

3
Bunu yapmanın uygun yolu: 1. Veritabanının COPY_ONLY yedeğini alın. 2. Raporlama sunucusuna geri yükleyin. 3. Kurtarma işlemini basit olarak ayarlayın ve geri yüklenen kopyayı salt okunur olarak işaretleyin. 4. Günlük dosyasını manuel olarak daraltın. Evet bu arada alana ihtiyacınız var, ama işinizi devam ettireceksiniz!
Aaron Bertrand
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.