SQL备份正在采取我所有的硬盘空间

我有一个工作,我每天运行备份我的SQL数据库。 我刚刚买了一台新的服务器,并将数据库备份传输到新的服务器上并进行恢复。 我们的数据库不像大多数公司那么大,只有40GB的大小。 我们去复制备份,我注意到硬盘已经存满了,备份的容量是900GB。 我在不同的SQL版本上使用了相同的工作,数据库备份永远不会像这样增长。

  • 运行Windows Server 2008 R2
  • 运行SQL Server 2008 R2 Ent
  • 64位

我不确定我是否在工作中编写了错误的代码,下面是代码:

BACKUP DATABASE [DATABASE] TO DISK = N'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.COMPANY \ MSSQL \ Backup \ DATABASE.BAK'NOFORMAT,NOINIT,NAME = N'DATABASE',SKIP,NOREWIND,NOUNLOAD, STATS = 10 GO声明@backupSetId为int select @backupSetId =从msdb..backupset的位置where database_name = N'DATABASE'and backup_set_id =(从msdb..backupsetselectmax(backup_set_id)where database_name = N'DATABASE')if @ backupsetId is null begin raiserror(N'Verify failed。找不到数据库备份信息''DATABASE'',16,1)end RESTORE VERIFYONLY FROM DISK = N'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.COMPANY \ MSSQL \ Backup \ DATABASE.BAK'WITH FILE = @backupSetId,NOUNLOAD,NOREWIND GO

(我添加了代码标签,但由于某些原因,他们没有采取)

有人可以告诉我为什么我的数据库备份不断增长? 我在这里先向您的帮助表示感谢。

NOINIT =指示备份集被附加到指定的媒体集,保留现有的备份集。

您的备份正在追加。 如果你不想备份继续增长,那么你需要使用INIT。

http://technet.microsoft.com/en-us/library/ms186865.aspx

每当它备份时,它就会追加到最后。

正如DanBig和joeqwerty所说的,你的备份附加到同一个文件。 如果要保留版本而不追加或覆盖,请创build个别date文件。 例如:

Declare @DBname varchar(255), @SQL nvarchar(max), @today nvarchar(50), @servername nvarchar(50) set @today = convert(nvarchar,GETDATE(),12) set @servername = REPLACE(@@SERVERNAME,'\','-') set @DBName = 'YourDB' set @SQL='BACKUP DATABASE [' + @DBName + '] TO DISK = N''c:\some backup path\' + @servername + '-' + @DBName + '-' + @today + '.bak'' WITH FORMAT, INIT, NAME = N''Full ' + @DBName + ' Database Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10' EXEC SP_EXECUTESQL @SQL