差异备份 (differential backup)定义
一种数据备份,基于完整数据库或部分数据库或一组数据文件或文件组(差异基准)的最新完整备份,并且仅包含自确定差异基准以来发生更改的数据。
使用SSMS数据库管理工具进行数据库差异备份
1、选择数据库-》右键点击-》选择任务-》选择备份。
2、在备份数据库弹出框中-》选择备份类型为差异-》然后删除系统生成的目标文件-》然后点击添加。
3、在选择备份目标弹出框中-》点击选择备份路径。
4、在定位数据库文件弹出框中,先选择需要备份的文件路径,然后数据备份文件名,点击确定。
5、在备份数据库弹出框,点击确定。
6、查看备份是否成功。
使用SSMS数据库管理工具进行数据库差异还原
差异备份与还原须知:差异备份是上次完整备份之后发生改变的副本。所以还原是需要上次的完整备份和最近一次差异备份。差异备份有两步操作,第一步为还原数据库,第二步还原差异部分。
还原数据库步骤
1、选择数据库-》右键点击-》选择任务-》选择还原-》选择数据库。
2、在还原数据库弹出框中-》先点击设备-》再点击还原文件路径。
3、在选择备份设备弹出框中-》点击添加文件。
4、在定位备份文件弹出框中-》先选择文件夹-》再选择要还原的文件-》点击确定。
5、进入还原模式。
6、覆盖现有数据库可不勾选-》选择数据库恢复模式为设置为NORecorvery。
7、查看数据库状态。
还原差异文件步骤
1、选择要还原的数据库-》右键点击-》选择任务-》选择还原-》选择文件和文件组。
2、在还原文件和文件组弹出框-》选择设备-》选择文件还原路径。
3、在选择备份设备弹出框-》选择添加。
4、在定位备份文件弹出框-》选择要还原的差异文件-》点击确定。
5、在还原文件和文件组弹出框-》选择文件-》点击选项。
6、选择恢复状态-》点击确定。
7、还原结果。
使用T-SQL脚本进行差异备份
语法:backup database 数据库名 to disk=文件路径 with differential;
示例:backup database testss to disk='D:\SqlTest\backup\t3.bak' with differential;
使用T-SQL脚本进行差异还原
语法:第一步先指定数据库恢复模式:restore database 数据库名 from disk=数据库文件 with norecovery ;
第二步再恢复差异备份:restore database 数据库名 from disk=差异文件 with recovery;示例:第一步先恢复备份数据库:restore database testss from disk='D:\SqlTest\backup\testss.bak' with norecovery ;
第二步再恢复差异备份:restore database testss from disk='D:\SqlTest\backup\t3.bak' with recovery;
(注意数据库如果存在,可删除或者使用覆盖先有数据库)
总结
优点:1、与创建完整备份相比,创建差异备份的速度可能非常快。 差异备份只记录自差异备份所基于的完整备份后更改的数据。 这有助于频繁地进行数据备份,减少数据丢失的风险。 但是,在还原差异备份之前,必须先还原其基准。 因此,从差异备份进行还原必然要比从完整备份进行还原需要更多的步骤和时间,因为这需要两个备份文件。
2、如果数据库的某个子集比该数据库的其余部分修改得更为频繁,则差异数据库备份特别有用。 在这些情况下,使用差异数据库备份,您可以频繁执行备份,并且不会产生完整数据库备份的开销。
3、在完整恢复模式下,使用差异备份可以减少必须还原的日志备份的数量。
缺点:差异备份基于最后一次完整备份的差异,那么,对于一个繁忙的数据库,在一段时间内做了几次差异备份,无论这中间有多少次Checkpoint,SQL Server依然将这些基于完整备份的差异页面放入差异备份文件,按道理来说,一个页面在一次Checkpoint之后,如果没有再发生任何修改,那么是不需要放入差异备份文件里面的(如果是基于最后一次差异的差异),因为差异位图无法基于差异的差异,这样会导致,有时候差异备份文件比完整备份文件还要大。