Przywróć plik Bak do mniejszych plików bazy danych mdf i ldf

11

Mam starszą bazę danych, której koszmarnego braku projektu nie będę tu wchodził, ale pliki na serwerze są (względnie) ogromne. Mam:

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

Ta baza danych jest tworzona co noc w pliku .bak i wysyłana na nasz serwer raportowania, gdzie jest przywracana. Plik .bak jest znacznie mniejszy i ma zaledwie 1,8 GB.

Jednak gdy próbuję przywrócić go na serwerze raportowania, kończy się niepowodzeniem z powodu niewystarczającej ilości miejsca. Na serwerze jest około 100 GB wolnego miejsca i stara się pochłonąć całe 139,4 GB, które pliki zużyły na oryginalnym serwerze. O ile moja wiedza na temat kompresji nie jest strasznie nieprawidłowa, jestem całkiem pewien, że plik 1,8 GB tak naprawdę nie rozszerza się o 7400%.

Moje pytanie: Czy jest jakiś sposób, aby powiedzieć SQL Serverowi, aby przywrócił ten plik kopii zapasowej bez rezerwowania tego miejsca z góry? Nie dbam o żadne dzienniki; Potrzebuję tylko danych, żeby tam być. Rozumiem bazy danych z perspektywy programowania i schematu, ale w żadnym wypadku nie jestem DBA.

To jest na SQL Server 2008 R2. Dziękuję za wszelką pomoc lub sugestie.

eouw0o83hf
źródło

Odpowiedzi:

11

Kopia zapasowa zawiera dwie informacje:

Rzeczywiste dane w kopii zapasowej to 1,8 GB. Ale metadane opisują układ plików jak na oryginalnym serwerze produkcyjnym. Chociaż wygląda na kompresję, nie jest faktyczną kompresją. To tylko metadane vs. treść. problem polega na tym, że podczas PRZYWRACANIA maszyna raportująca tworzy układ zgodnie z opisem w metadanych, a zatem 114,6 GB + 24,8 GB. Teraz prawdziwe pytanie: czy możesz go przywrócić bez odtwarzania oryginalnego układu plików DB? Nie. Istnieją jednak inne rozwiązania Twojego problemu: przywróć oryginalną bazę danych. Zmniejszanie dziennika transakcji obejmuje kroki, które należy wykonać, ponieważ dziennik jest twoim głównym bolącym punktem. Następnie wdrożyłbym wysyłanie dziennika zamiast tworzenia kopii zapasowych / przywracania.

Remus Rusanu
źródło
Dziękuję Ci; zmniejszenie dziennika transakcji sprawdziło się doskonale.
eouw0o83hf
1
Wysyłanie dziennika zamiast kopii zapasowych dziennika ??
Thomas Stringer
4
@Shark: przesyłanie dziennika zamiast pełnych kopii zapasowych, jako sposób na dostarczenie bazy danych do komputera raportującego.
Remus Rusanu,
No dobrze, zupełnie przegapiłem tę część pytania. Dziękuję za wyjaśnienie!!
Thomas Stringer
0

SQL Server 2012 pozwala na użycie tylko pliku mdf bazy danych i dołączenie go do SQL Server: http://msdn.microsoft.com/en-us/library/ms174385.aspx . SQL Server tworzy nowy plik ldf, w którym można określić rozmiar. Następnie:

  • użyj prostego modelu odzyskiwania, aby zapobiec wzrostowi pliku dziennika, lub
  • użyj pełnego modelu odzyskiwania i regularnie wykonuj kopie zapasowe dziennika transakcji. Dzięki temu plik dziennika nie będzie się powiększał
Carol Baker West
źródło