SQL Server:如何在删除旧记录后缩小.bak文件

时间:2018-04-16 16:42:54

标签: sql sql-server sql-server-2008

我有一个数据库,我的目的是在一段时间后从几个表中删除一些旧记录,进行备份并收缩日志文件。我每天都会运行一个程序来执行此操作。但是,我的.bak继续变大。这是为什么?

即使在收缩日志文件并删除旧记录之后,每次备份时我的.bak文件都会增长得更多。如何备份数据库并使.bak文件表示当前所有表中包含的实际大小?任何帮助都非常感谢。谢谢。

DECLARE @setDate DATE 

SET @setDate = CAST(GETDATE() - 10 AS DATE) 

DELETE recipebatches 
WHERE CAST(dates AS DATE) < @setDate 

DELETE parameterdata 
WHERE CAST(dates AS DATE) < @setDate 

BACKUP DATABASE xxxx
TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\xxxx.BAK'

ALTER DATABASE xxxx
SET RECOVERY SIMPLE;  

-- shrink  to 1 mb.  
DBCC SHRINKFILE (xxxx_Log, 1);  

ALTER DATABASE xxxx  
SET RECOVERY FULL; 

我的数据库中的当前表 - 记录不多,但我有2,329,768 kB .bak大小

Current tables in my database

LOG和.MDF文件的增长数据:

enter image description here

1 个答案:

答案 0 :(得分:2)

这是.bak文件增长的最可能原因:

https://dba.stackexchange.com/questions/139776/why-is-bak-file-size-increasing-doubling-with-each-consecutive-backup-on-sql-se

该链接说明.bak如何包含多个备份集,除非您对正在执行的备份应用特定设置。这将导致.bak在您反复保存到同一文件时增长。

另外,请检查您的压缩设置。