我有一个关于SQL Server 2008 R2 SP2的数据库,我在该db上有这个备份计划:
每个星期五早上我都会得到我的数据库的完整备份,中午我得到差异备份,而本周的其他几天我每天都会得到两次差异备份(早上和中午)。
完整备份大小约为50 GB。我的问题是:第一个差异备份大小约为42 GB。
我在完全备份和差异备份之间没有任何工作,并且没有任何重建索引,重新组织索引或更新统计信息,此数据库上的事务不多。
为了测试,我从db获得完整备份,完成后,我立即从中获得差异备份,但差异备份大小约为42 GB。
即使我检查了DCM页面内容,在完成备份后,此页面也会重置。
我不知道是什么问题。
以下是我的备份命令:
完整备份:
BACKUP DATABASE [test]
TO DISK = N''filePath\test.bak''
WITH NOFORMAT, NOINIT, NAME = 'test', SKIP, REWIND,
NOUNLOAD,COMPRESSION, STATS = 10
DIFF备份
BACKUP DATABASE [test]
TO DISK = N''filePath\test.bak''
WITH DIFFERENTIAL, NOFORMAT, NAME = 'testdiff', NOINIT, SKIP, REWIND,
NOUNLOAD, STATS = 10
答案 0 :(得分:1)
您正在指定NOINIT
子句。
表示备份集附加到指定的媒体集,保留现有备份集。如果为媒体集定义了媒体密码,则必须提供密码。 NOINIT是默认值。
随着新备份的追加,您的文件将继续增长。
此外,您的帖子未提及备份日志的时间和方式。我希望这只是一个遗漏,因为日志也需要备份。
答案 1 :(得分:1)
BACKUP DATABASE [test] TO DISK = N''filePath \ test.bak''with DIFFERENTIAL,NOFORMAT,NAME = testdiff',NOINIT,SKIP,REWIND,NOUNLOAD,STATS = 10
在上面的语句中我使用了NOINIT,当然新备份文件必须附加到上一个文件,但因为我使用新名称作为我的新备份文件,新文件将被创建并且不会附加到以前的档案。
但我的问题已经解决了。因为我在删除它之前和之后都在我的数据库上进行了复制,所以发布保留在SQL实例中,并且我的数据库上有一个活动事务(复制),因此它锁定了许多事务日志,并且我的许多VLF都是活动的。它们是等待发送到订阅服务器。
从我的SQL实例中删除发布后,VLF文件设置为0并且事务日志文件已缩小因此,差异备份文件大小减少了。