Dlaczego plik .bacpac jest tak mały w porównaniu z plikiem .bak tej samej bazy danych?

39

Robiłem kopie zapasowe moich baz danych SQL Server 2014 Express w celu zaimportowania na inne serwery i zauważyłem różnicę w rozmiarze pliku między .bacpaci .bak.

Dlaczego .bacpacplik jest tak mały w porównaniu z .bakplikiem z tej samej bazy danych?

Dzięki za wszelkie spostrzeżenia!

Chris
źródło

Odpowiedzi:

42

ZA

  • .bacpacplik = schemat + dane. Pamiętaj, że dane są przetwarzane BCP przy użyciu formatu natywnego (nieczytelnego dla człowieka).

    • Można zmienić nazwę .bacpac, aby .zipzobaczyć rzeczywistej zawartości.

    • Możesz użyć ...DAC\bin\sqlpackage.exewiersza polecenia, aby wypakować .bacpaczawartość programowo.

    • Jest to migawka, która zawiera dane użytkownika + schemat z SQL Server lub Azure SQL Database.

-

  • Kopia zapasowa (zwykle ma .bakrozszerzenie) = PEŁNA kopia zapasowa bazy danych zawiera pełną kopię bazy danych i zapewnia pojedynczy punkt w czasie, do którego można przywrócić bazę danych. Pełna kopia zapasowa zawiera niektóre rekordy dziennika transakcji, dzięki czemu przywrócony komponent (baza danych, plik lub grupa plików) może być spójny transakcyjnie.

A BACPACnie zastępuje PEŁNEJ kopii zapasowej. To tylko migawka, której można użyć do przeniesienia bazy danych z jednego serwera na inny (lub do chmury) i zarchiwizowania istniejącej bazy danych w otwartym formacie .

Z mojego testu, poniżej są wyniki

wprowadź opis zdjęcia tutaj

Kin Shah
źródło
3
Więc jakich informacji brakuje .bacpac w pliku .bak, co czyni go mniejszym?
AllTradesJack
1
Plik dziennika jest prawdopodobnie największym powodem różnicy wielkości.
Paul Spangle
6
Zakładam, że w pliku .bacpac nie ma również danych indeksu, co prawdopodobnie WIELKIE przyczyni się do rozmiaru pliku.
Rory,
9
W takim przypadku, kiedy przywracasz z .bacpac, musisz jakoś odbudować indeksy, czy jest to wykonywane automatycznie?
żartuje