比方说,我有一个“MyDB”SQL Server 2005数据库(简单恢复),在这个数据库中,我在星期天做了完整的备份,每隔一个晚上做一次差异
BACKUP DATABASE [MyDB] TO DISK = N'c:\Database Backups\MyDB\MyDB_Full.bak' WITH NOFORMAT, INIT, NAME = N'MyDB.BAK', SKIP, NOREWIND, NOUNLOAD, STATS = 10
和
BACKUP DATABASE [MyDB] TO DISK = N'c:\Database Backups\MyDB\MyDB_Diff.bak' WITH NOINIT, DIFFERENTIAL, NAME= 'MyDB.BAK', STATS= 10
差异备份过程用什么来决定哪些数据在不同的晚上备份? 它是否需要mydb_full.bak文件来完成其业务?
如果我想节省磁盘空间,是否可以将mydb_full.bak文件压缩后创build.zip文件,而不会对差异备份造成负面影响,如果需要还原,只需在开始之前解压完整备份即可。
否 – 差异备份不使用完整备份文件本身作为参考。 您可以(也应该!)安全地将完整的备份转储移动到另一台机器或任何你喜欢的东西。
SQL Server在内部存储一个脏盘区的位图(自上次完全备份以来已更改的部分数据库),并且在运行差异备份时,它会查询位图,并只将数据库的已更改部分写入备份。
我刚刚做了一个快速testing,首先创build一个我的testing数据库的完整备份,删除它,然后运行差异备份。 令我惊讶的是,差异备份运行良好,所以我不认为这是最后一个完整的备份文件本身。
所以看起来好像你可以压缩你的完整备份没有问题。 我很好奇听到它确定它是差异备份的起点,所以我希望有人能够启发我们。