it-swarm.dev

Czy można jednocześnie przywrócić serwer sql-bak i zmniejszyć dziennik?

Mamy plik BAK od klienta, który przesłaliśmy do naszych biur programistów w celu zbadania problemu. Kopia zapasowa ma obecnie 25 GB, a przywrócona baza danych ma mniej więcej ten sam rozmiar, jednak do przywrócenia potrzebuje 100 GB. Uważam, że dzieje się tak, ponieważ baza danych jest skonfigurowana tak, aby mieć dziennik transakcji o wielkości 75 GB. Po przywróceniu bazy danych możemy zmniejszyć plik dziennika, ale czy można to zrobić w trakcie przywracania?

26
Adam Butler

Nie ma możliwości zmniejszenia kopii zapasowej w ramach procesu przywracania. Przywrócona baza danych musi wyglądać dokładnie tak jak źródłowa baza danych, z jedynym wyjątkiem, że możesz zmieniać litery dysków i foldery.

16
mrdenny

Istnieje do-not-ever-do-this-in-a-live-environment włamanie, którego można użyć tam, gdzie jest mało miejsca, poprzez przywrócenie pliku dziennika do skompresowanego folderu. Spróbuj tego, kompresując istniejący folder i przywracając go, spowoduje błąd, więc musisz oszukiwać za pomocą dowiązania symbolicznego.

  1. Utwórz skompresowany folder D:\LogCompressed\
  2. Utwórz symboliczne łącze do skompresowanego folderu mklink /D /J D:\Log\ D:\LogCompressed\

  3. Przywróć bazę danych z plikiem ldf wskazującym na D:\Log\

  4. Zmniejsz plik dziennika do odpowiedniego rozmiaru

  5. Odłącz bazę danych, przenieś plik dziennika do nieskompresowanego folderu, dołącz

Jest brudny, oszukuje, NIGDY NIE ZRÓB TO NA ŻYWO, ale działa. Szybki test nowo utworzonej bazy danych z plikiem dziennika o wielkości 32 MB pokazuje, że po skompresowaniu zajmuje 330 KB na dysku, dekompresuje folder, a rozmiar dysku powraca do 32 MB.

34

Uważam, że powodem, dla którego twoja kopia zapasowa ma 25 GB, a przywrócona baza danych ma 100 GB, jest nie z powodu dziennika transakcji. Domyślam się, że twoje pliki bazy danych mają 100 GB przydzielonego miejsca i 25 GB rzeczywistych danych w bazie danych.

Istnieje różnica między przydzielone miejsce na pliki bazy danych a wykorzystane miejsce na dane. W tym przypadku pierwszy z nich ma pojemność 100 GB, a drugi 25 GB.

9
Thomas Stringer