Почему файл .bacpac такой маленький по сравнению с файлом .bak той же базы данных?

39

Я делал резервные копии своих баз данных SQL Server 2014 Express для импорта на другие серверы и заметил разницу в размере файла между .bacpacи .bak.

Почему .bacpacфайл такой маленький по сравнению с .bakфайлом той же базы данных?

Спасибо за любые идеи!

Крис
источник

Ответы:

42

  • .bacpacфайл = схема + данные. Обратите внимание, что данные BCP исключаются с использованием собственного формата (не читается человеком).

    • Вы можете переименовать , .bacpacчтобы .zipувидеть реальное содержимое.

    • Вы можете использовать ...DAC\bin\sqlpackage.exeкомандную строку для извлечения .bacpacсодержимого программно.

    • Это снимок, который включает данные пользователя + схему из SQL Server или базы данных SQL Azure.

-

  • Резервная копия (обычно имеет .bakрасширение) = полная резервная копия базы данных содержит полную копию базы данных и предоставляет единый момент времени, к которому база данных может быть восстановлена. Полная резервная копия содержит некоторые записи журнала транзакций, поэтому восстановленный компонент (база данных, файл или файловая группа) может быть согласован с точки зрения транзакций.

А BACPACне является заменой ПОЛНОЙ резервной копии. Это просто снимок, который можно использовать для перемещения базы данных с одного сервера на другой (или в облако) и архивирования существующей базы данных в открытом формате .

Из моего теста ниже приведены результаты

введите описание изображения здесь

Кин Шах
источник
3
Так какая информация отсутствует .bacpac в файле .bak, что делает его меньше?
AllTradesJack
1
Файл журнала, вероятно, является основной причиной разницы в размерах.
Пол Спэнгл
6
Я бы предположил, что в .bacpac также нет индексных данных, которые, вероятно, являются БОЛЬШИМ вкладчиком в размер файла.
Рори
9
В этом случае, когда вы восстанавливаете из .bacpac, вам нужно каким-то образом перестроить индексы, или это делается автоматически?
jocull