Sql-server bak geri yüklemek ve aynı zamanda günlüğü küçültmek mümkün mü?


26

Problem incelemesi için geliştirici ofislerimize transfer ettiğimiz bir müşteriden bir fırın dosyamız var. Yedekleme şu anda 25 GB’dir ve geri yüklenen veritabanı yaklaşık olarak aynı boyuttadır ancak restore edilmesi için 100 GB’ya ihtiyacı vardır. Bunun nedeni, veritabanının 75 GB işlem günlüğü boyutuna ayarlanmış olmasıdır. Veritabanını geri yükledikten sonra günlük dosyasını daraltabiliriz, ancak geri yüklemede bunu yapmanın bir yolu var mı?


3
Sizin farkında olduğumu, geri yüklemeyi tamamlayana kadar veritabanını değiştiremezsiniz.
Shawn Melton

3
Aynı durumdaydım ve cevabını dört gözle bekliyorum. Sadece yorum yapmak için, bir ürün var: kırmızı kapının SQL sanal geri yükleme. Bunu hiç kullanmadım, ancak siteye göre: 'Monte edilmiş veritabanı yedekleme dosyası için sıfıra yakın ek depolama gerektiriyor'.
StanleyJohns,

Yanıtlar:


16

Yedeklemeyi geri yükleme işleminin bir parçası olarak daraltmanın bir yolu yoktur. Geri yüklenen veritabanı, kaynak harflere tam olarak benzemelidir, tek istisna dışında sürücü harflerini ve klasörlerini değiştirebilmeniz gerekir.


34

Bir Orada do-not-sürekli do-bu-in-a-canlı-çevre uzay sıkıştırılmış klasöre günlük dosyasını geri yükleyerek, sınırlıdır nerede kullanabilirsiniz kesmek. Bunu mevcut bir klasörü sıkıştırarak ve geri yükleyerek bir hatayla sonuçlanacağından, sembolik bir bağlantıyla hile yapmanız gerekir.

  1. Sıkıştırılmış bir klasör oluşturun D:\LogCompressed\
  2. Sıkıştırılmış klasöre sembolik bir bağlantı oluşturun mklink /D /J D:\Log\ D:\LogCompressed\

  3. Veritabanınızı işaret eden ldf dosyasıyla geri yükleyin D:\Log\

  4. Günlük dosyasını uygun bir boyuta küçültün

  5. Veritabanını çıkarın, günlük dosyasını sıkıştırılmamış bir klasöre taşıyın,

Kirli, hile yapıyor, HİÇBİR CANLI YAPMAYIN , ama işe yarıyor. Yeni oluşturulmuş bir veritabanının 32 MB günlük dosyası ile hızlı bir şekilde test edilmesi, sıkıştırıldığında diskte 330kb'ı işgal ettiğini, klasörün sıkıştırmasını açtığını ve disk boyutunun 32 MB'ye geri döndüğünü gösterir.


2
@Mark: Bu kesmek işe yarıyor ama mükemmel değil. Günlük dosyası gerçek boyutundan daha az yer kaplasa bile, disk gerçekten veritabanının gerçek boyutu kadar boş alana sahip olmadıkça veritabanını geri yükleyemezsiniz. Besize, geri yüklerken, günlük dosyasının gerçek boyutu acı çeken gerçek boyuttan yavaşça aşağı iner. Ancak, yine de çok iyi bir kesmek. Teşekkürler.
chenwq

9

Ben neden yedek 25 GB ve restore veritabanı 100 GB olduğuna inanıyoruz değil çünkü işlem günlüğünün. Tahminime göre, veritabanı dosyalarınız 100 GB ayrılmış alana sahip ve veritabanında 25 GB gerçek veri var.

Ayrılmış veritabanı dosya alanı ve kullanılan veri alanı arasında bir fark var . Bu durumda, eski 100 GB ve ikincisi 25 GB'dir.


1
Müşteri işlem kayıt defterine 75GB tahsis eder. Geri yükledikten sonra şu anda günlük tahsisini 1GB olarak değiştiriyorum. Mümkünse, bu veritabanını sürücülerin 100GB'tan daha az boş alana sahip olduğu bir sunucuya geri yüklemek istiyorum. Başka bir sunucuya geri yükleme yapmak zorunda kalmadan, kesmek, yedekleme ve tekrar geri yüklemek.
Adam Butler

@Adam Butler, geçici olarak ilk sunucuya geri yükleyebilsin, böylece dosya boyutlarını küçültebilirsin, sonra kopyanın yedeğini alabilir ve hedef sunucuya geri yükleyebilir misin?
DForck42
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.