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


10

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

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

在SQL Server Mgmt Studio中,当我右键单击数据库->“报告”->“备份和还原事件”->展开“成功备份操作”时:

此处的报告显示,最新备份大小记录为55MB,但是当我转到实际.bak文件时,它为260MB。今天.bak,彼此备份的大小也记录为55MB,而其相应文件的大小则是原来的几倍(并且随着每次备份操作的增加而增加)。

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

Answers:


14

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

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

在此处输入图片说明


8

我假设您每次都备份到同一文件。INITNOINIT在运行备份时有一个选项。 NOINIT(这是默认设置),告诉它仅向文件添加其他备份。

每个BOL:

{NOINIT | 在里面 }

控制备份操作是追加还是覆盖备份介质上的现有备份集。默认设置是附加到介质上的最新备份集(NOINIT)。

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

如果INIT在备份命令中包括该子句,则它将每次覆盖现有备份。

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


2

如果您直接在SQL中执行此操作,而不使用sql server management studio向导。备份时必须指定“ NOINT”或“ INIT”,以分别添加或覆盖文件。

这是它的SQL

BACKUP DATABASE <data_base_name> TO DISK = <File_Path> WITH INIT
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.