为什么.bacpac文件比同一个数据库的.bak文件那么小?


39

我一直在备份SQL Server 2014 Express数据库以导入到其他服务器,并注意到.bacpac和之间的文件大小有所不同.bak

为什么.bacpac文件比.bak同一个数据库的文件小?

感谢您的任何见解!

Answers:


42

一种

  • .bacpac文件=架构+数据。请注意,数据是使用本机格式(人类不可读)进行BCP输出的。

    • 您可以重命名.bacpac.zip以查看实际内容。

    • 您可以使用...DAC\bin\sqlpackage.exe命令行以.bacpac编程方式提取内容。

    • 它是一个快照,其中包含来自SQL Server或Azure SQL数据库的用户数据+架构。

--

  • 备份(通常具有.bak扩展名) =完整数据库备份包含数据库的完整副本,并提供可将数据库还原到的单个时间点。完整备份包含一些事务日志记录,以便可以使还原的组件(数据库,文件或文件组)在事务上保持一致。

A BACPAC不能代替完整备份。它只是一个快照,可用于将数据库从一台服务器移至另一台服务器(或移至云),并以开放格式归档现有数据库

根据我的测试,结果如下

在此处输入图片说明


3
那么.bak文件所缺少的.bacpac缺少哪些信息,这使它更小了?
AllTradesJack

1
日志文件可能是造成大小差异的最大原因。
Paul Spangle

6
我假设.bacpac中也没有索引数据,这很可能是文件大小的BIG贡献者。
罗里

9
在这种情况下,从.bacpac还原时,是否需要以某种方式重建索引,或者这是自动完成的?
jocull
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.