Bak dosyasını daha küçük mdf ve ldf veritabanı dosyalarına geri yükleme


11

Kabus tasarım eksikliği buraya girmeyeceğim eski bir veritabanım var, ancak sunucudaki dosyalar (nispeten) çok büyük. Sahibim:

MyDatabase.mdf: 24,8 GB
MyDatabase.ldf: 114,6 GB

Bu veritabanı her gece bir .bak dosyasına yedeklenir ve geri yüklendiği raporlama sunucumuza gönderilir. .Bak dosyası yalnızca 1.8 GB boyutunda çok daha küçük.

Ancak, raporlama sunucusunda geri yüklemeye çalıştığımda, yetersiz alan nedeniyle başarısız olur. Sunucuda yaklaşık 100GB boş alan var ve orijinal sunucuda tüketilen dosyaların 139.4GB'ın tamamını tüketmeye çalışıyor. Sıkıştırma bilgim korkunç derecede yanlış olmadıkça, 1.8GB dosyasının aslında% 7400 oranında genişlemediğinden oldukça eminim.

Sorum: SQL Server'a bu alanı önceden ayırmadan bu yedekleme dosyasını geri yüklemesini söylemenin bir yolu var mı? Günlüklerin hiçbirini umursamıyorum; Sadece orada olmak için verilere ihtiyacım var. Veritabanlarını geliştirme ve şema perspektifinden anlıyorum, ama hiçbir şekilde DBA değilim.

Bu SQL Server 2008 R2'de. Yardım ve öneriler için teşekkürler.

Yanıtlar:


11

Yedekte iki bilgi bulunur:

Yedeklemedeki gerçek veriler 1.8 GB'dir. Ancak meta veriler, dosyaların orijinal üretim sunucusundaki düzenini tanımlar. Sıkıştırma gibi görünse de, gerçek sıkıştırma değildir. Sadece meta veri vs içerik. sorun RESTORE sırasında raporlama makinesinin meta verilerde açıklandığı gibi bir düzen oluşturması, bu nedenle 114.6GB + 24.8GB olmasıdır. Şimdi asıl soru için: orijinal DB dosya düzenini yeniden yaratmadan geri yükleyebilir misiniz? Hayır. Ancak, sorununuz için başka çözümler de var: orijinal DB'yi tekrar kontrol edin. İşlem Günlüğünün Küçültülmesi, günlük en önemli acı noktanız olduğu için yapmanız gereken adımları kapsar. Sonra yedekleme / geri yükleme yerine günlük nakliye dağıtmak .


Teşekkür ederim; işlem günlüğünü daraltmak hile mükemmel yaptı.
eouw0o83hf

1
Günlük yedekleri yerine günlük nakliye ??
Thomas Stringer

4
@Shark: DB'yi raporlama makinesine teslim etmenin bir yolu olarak tam yedeklemeler yerine günlük gönderimi .
Remus Rusanu

Oh tamam, sorunun o kısmını tamamen özledim. Açıklama için teşekkürler!!
Thomas Stringer

0

SQL Server 2012 sadece veritabanı mdf dosyasını kullanmanıza ve SQL Server'a eklemenize izin verir: http://msdn.microsoft.com/en-us/library/ms174385.aspx . SQL Server, boyutu belirtebileceğiniz yepyeni bir ldf dosyası oluşturur. Sonra:

  • kullanmak Basit kurtarma modeli büyüyen adresinin günlük dosyasını tutmak, ya da
  • Tam kurtarma modelini kullanın ve düzenli işlem günlüğü yedeklemeleri yapın. Bu, günlük dosyasının büyümesini de engelleyecektir.
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.