假设我有一个“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 文件后将其压缩为 .zip 文件而不会对差异备份产生不利影响,如果需要恢复,只需在开始前解压缩完整备份即可?
否 - 差异备份不使用完整备份文件本身作为参考。您可以(并且应该!)安全地将您的完整备份转储移动到另一台机器或任何您喜欢的机器上。
SQL Server 在内部存储脏区位图(自上次完整备份以来已更改的数据库部分),当您运行差异备份时,它会查阅位图并仅将数据库的那些更改部分写入备份。
我刚刚对此进行了快速测试,首先创建了我的一个测试数据库的完整备份,将其删除,然后运行差异备份。令我惊讶的是,差异备份运行良好,所以我认为它不会脱离最后一个完整备份文件本身。
因此,您似乎可以毫无问题地压缩完整备份。我很想知道它现在确定差异备份的起点的确切位置,所以我希望有人能启发我们。