为什么 .bak 文件大小随着 SQL Server 上的每个连续备份而增加/加倍?

ful*_*ull 12 sql-server backup sql-server-2012

我在 SQL Server 2012 Express 上运行一个简单的数据库。

就在今天,当我备份数据库时,.bak文件大小是几分钟前上一次备份的两倍。我今天做了几次备份(通过 SQL Server Management Studio -> 备份类型:完整),每一次备份,.bak文件都会加倍。

在 SQL Server Mgmt Studio 中,当我右键单击我的数据库 -> 'Reports' -> 'Backup and Restore events' -> 展开 'Successful Backup Operations':

这里的报告显示最新的备份大小记录为 55MB,但当我转到实际.bak文件时,它是 260MB。今天的每个其他备份也被记录为 55MB 大小,而它们对应的.bak文件大数倍(并且随着每次备份操作而增长)。

可能出什么问题了?自从这开始发生以来,我没有对数据库进行任何更改。

Han*_*non 16

备份文件包含数据库的多个副本,因为每个备份都没有对其进行“初始化”或“格式化”。

转到“备份数据库”对话框上的“选项”选项卡,然后选择“覆盖所有现有备份集”:

在此处输入图片说明


Ken*_*her 10

我假设您每次都备份到同一个文件。可以选择运行备份INITNOINIT何时运行备份。 NOINIT(这是默认设置)告诉它只向文件添加一个额外的备份。

每个 BOL:

{ NOINIT | 在里面 }

控制备份操作是附加到还是覆盖备份媒体上的现有备份集。默认是附加到媒体上的最新备份集 (NOINIT)。

因此,每次运行 55MB 备份时,文件都会变大约 55MB。

如果您INIT在备份命令中包含该子句,那么它每次都会覆盖现有备份。

当然,另一种选择是每次将备份运行到新文件中并清理旧文件。如果当前备份之一不好,或者您需要恢复到历史记录,这通常是一个好主意。