差异备份只创建数据库中自上一次数据库备份之后修改过的所有页的复本。差异日志主要用于使用频繁的系统,一旦这类系统中的数据库发生故障,必须尽快使其重新联机。差异备份比完整数据库备份小,因此对正在运行的系统影响较小。 例如,某个站点在星期天晚上执行完整数据库备份。在白天每隔 4 小时制作一个事务日志备份集,并用当天的备份重写头一天的备份。每晚则进行差异备份。如果数据库的某个数据磁盘在星期四上午 9:12 出现故障,则该站点可以: 
备份当前事务日志。 还原从星期天晚上开始的数据库备份。 还原从星期三晚上开始的差异备份,将数据库前滚到这一时刻。 还原从早上 4 点到 8 点的事务日志备份,以将数据库前滚到早上 8 点。 还原故障之后的日志备份。这将使数据库前滚到故障发生的那一刻。 如何创建差异数据库备份(企业管理器) 创建差异数据库备份 展开服务器组,然后展开服务器。 展开"数据库"文件夹,右击数据库,指向"所有任务"子菜单,再单击"备份数据库"命令。 在"名称"框内,输入备份集名称。在"描述"框中输入备份集的描述(可选)。 在"备份"框下选择"数据库 — 差异"。 在"目的"下,单击"磁带"或"磁盘",然后指定备份目的地。 如果没有出现目的地,单击"添加"以添加现有的备份设备或创建新的备份设备。 在"重写"下执行下列操作之一: 单击"追加到媒体",将备份追加到备份设备上任何现有的备份中。 单击"重写现有媒体",将重写备份设备中任何现有的备份。 选择"调度"复选框调度备份操作以后执行或定期执行。(可选) 单击"选项"选项卡,然后执行下列一项或多项操作:(可选) 选择"完成后验证备份"复选框,在备份时验证备份。 选择"备份后弹出磁带"复选框,在备份操作完成后弹出磁带。该选项只适用于磁带设备。 选择"检查媒体集名称和备份集到期时间"复选框,检查备份媒体以防意外重写。在"媒体集名称"框中,输入将用于备份操作的媒体的名称。如果仅指定备份集到期时间,则将其保留为空。 如果是第一次使用备份媒体,或者要更改现有的媒体标签,则在"媒体集标签"框下选择"初始化并标识媒体"复选框,然后输入媒体集名称和媒体集描述。只有在重写媒体时才能对其进行初始化和标识设置。 如何还原差异数据库备份(企业管理器) 说明 如果要还原差异数据库备份,而在 msdb 数据库中存储的备份历史记录中没有列出此差异数据库备份的任何备份集信息,例如在另一台服务器上创建的差异数据库备份,请参阅如何从备份设备还原备份。 还原差异数据库备份 展开服务器组,然后展开服务器。 展开"数据库"文件夹,右击数据库,指向"所有任务"子菜单,然后单击"还原数据库"命令。 在"还原为数据库"框中,如果要还原的数据库名称与显示的默认数据库名称不同,请在其中进行输入或选择。 单击"数据库"。 在"要还原的第一个备份"列表中,选择要还原的备份集。 在"还原"列表中,单击要还原的差异备份。 单击"选项"选项卡,然后执行下列操作之一:(可选) 单击"使数据库可以继续运行,但无法还原其它事务日志",如果没有其它要应用的事务日志备份。 单击"使数据库不再运行,但能还原其它事务日志",如果要应用其它事务日志备份。

解决方案 »

  1.   

    1)完全备份
    -------------------------------------------
    (1)是备份的基准。在做备份时第一次备份都建议使用完全备份。
    (2)完全备份会备份数据库的所有数据文件、数据对象和数据。
    (3)会备份事务日志中任何未提交的事务。因为已提交的事务已经写入数据文件中。
    --------------------------------------------
    backup database d1 to bak1 with init     --完全备份
    backup database d1 to bak1 with noinit
    ----------------------------------------------------------------------
    2)差异备份
    ---------------------------------------------
    (1)基于完全备份。
    (2)备份自最近一次完全备份以来的所有数据库改变。
    (3)恢复时,只应用最近一次完全备份和最新的差异备份。
    -----------------------------------------------
    backup database d2 to bak2 with init,name='d2_full' --差异备份,第一次备份时应做完全备份
    create table b1(c1 int not null,c2 char(10) not null)
    backup database d2 to bak2 with differential,name='d2_diff1'
    insert b1 values(1,'a')
    backup database d2 to bak2 with differential,name='d2_diff2'
    insert b1 values(2,'b')
    backup database d2 to bak2 with differential,name='d2_diff3'
    insert b1 values(3,'c')
    backup database d2 to bak2 with differential,name='d2_diff4'
    restore headeronly from bak2
    ----------------------------------------------------------------------