在SQL Server Management Studio中还原数据库

时间:2024-04-16 13:52:19

18.5  在SQL Server Management Studio中还原数据库

不管愿不愿意,一个数据库管理员或多或少都会遇到要还原数据库的操作。有时是因为数据库的软硬件出了故障,有时是因为做了大量的误操作,需要将数据库还原到误操作之前的状态。不过不管是因为什么原因,在还原数据库时都必需要了解还原的方式和一些注意事项。

18.5.1  还原数据库的方式

有几种数据库备份的方式就将会有几种还原数据库的方式:

l  完整备份的还原:无论是完整备份、差异备份还是事务日志备份的还原,在第一步都要先做完整备份的还原。完整备份的还原只需要还原完整备份文件即可。

l  差异备份的还原:差异备份的还原一共需要两个步骤,第一个步骤先还原完整备份,第二步还原最后一个差异备份。例如在每个周日做一次完整备份,周一到周六每天下班前做一次差异备份,如果在某个周四发生了数据库故障,那么做差异备份的还原就应该先还原最近一个周日做的完整备份,然后还原周三做的差异备份。如果在差异备份之后还有事务日志备份,那么还应该还原事务日志备份。

l  事务日志备份的还原:还原事务日志备份的步骤比较多一些,因为事务日志备份相对而言会做得比较频繁一些。例如某个数据库在每个周日做完整备份,每天的下午18点做差异备份,在白天里每隔三个小时做一次事务日志备份。假设在周三早上8点上班时数据库发生故障,那么还原数据库的步骤应该是:先恢复周日做的完整备份,然后恢复周二下午做的差异备份,最后依次恢复差异备份到损坏为止的每一个事务日志备份,即周二晚上21点、周二晚上24点、周三早上3点、周三早上6点所做的事务日志备份。

l  文件和文件组备份的还原:通常只有数据库中某个文件或文件组损坏了才会使用这种还原模式。

18.5.2  还原数据库前要注意的事项

在还原数据库之前,要注意以下两点:

l  检查备份设备或文件:在还原数据库之前,首先要找到要还原的备份文件或备份设备,并检查备份文件或备份设备里的备份集是否正确无误,例如使用前面介绍的“RESTORE VERIFYONLY”语句。

l  查看数据库的使用状态:在还原数据库之前,要先查看数据库是否还有其他人在使用,如果还有其他人正在使用,将无法还原数据库。

18.5.3  还原数据库备份

在SQL Server Management Studio里还原数据的方法如下:

(1)启动【SQL Server Management Studio】,右击要还原的数据库,在弹出的快捷菜单里选择【任务】à【还原】à【数据库】,弹出如图8-12所示【还原数据库】对话框

图8-12 【还原数据库】对话框

(2)在图8-12所示对话框里有很多选择项,不同的还原情况选择不同的选择项:

l  【目标数据库】:在该下拉列表框里可以选择要还原的数据库。

l  【目标时间点】:如果备份文件或备份设备里的备份集很多的话,还可以选择【目标时间点】,只要有事务日志备份支持,可以还原到某个时间的数据库状态。在默认情况下该项为“最近状态”。

l  【还原的源】:在该区域里可以指定用于还原的备份集的源和位置。
    如果选择【目标数据库】单选框,则从msdb数据库里的备份历史记录里查得可用的备份,并显示在【选择用于还原的备份集】区域里。此时不需要指定备份文件的位置或指定备份设备,SQL Server会自动根据备份记录来找到这些文件。
    如果选择【源设备】单选框,则要指定还原的备份文件或备份设备。点击【…】按钮,弹出如图18.13所示【指定备份】对话框。在【备份媒体】下拉列表框里可以选择是备份文件还是备份设备,选择完毕后单击【添加】按钮,将备份文件或备份设备添加进来。选择备份文件或备份设备后,返回到18-12所示对话框。

图18.13 【指定备份】对话框

l  【选择用于还原的备份集】区域:在该区域里列出了所有可用的备份集。
    如果【目标时间点】为“最近状态”,【还原的源】为“源数据库”,该区域显示的是最后一次完整备份到现在的所有可用备份集。
    如果【目标时间点】为“最近状态”,【还原的源】为“源设备”,该区域显示的是备份文件或备份设备里的所有可用备份集。
    如果【目标时间点】指定的时间,【还原的源】为“源数据库”,该区域里显示的是从该时间前一个完整备份到目前为止的所有非完整备份。例如一个数据库在2006年9月18日、19日、20日三天的做过备份,其中每天的0点是完整备份,12点是差异备份,21点是日志备份。如果在【目标时间点】里的时间点为2006年9月19日14点,那么在【选择用于还原的备份集】区域里显示的将是从2006年9月19日的所有备份集与20日的所有差异备份集和事务日志备份集。
    如果【目标时间点】指定的时间,【还原的源】为“源设备”,该区域显示的是备份文件或备份设备里的第一个到该时间之后第一个完整备份以来的所有备份。例如一个备份文件里包含了2006年9月18日、19日、20日三天的备份数据,其中每天的0点是完整备份,12点是差异备份,21点是日志备份。如果在【目标时间点】里的时间点为2006年9月19日14点,那么在【选择用于还原的备份集】区域里显示的将是从2006年9月18日与19日两天的所有备份集。
    在【选择用于还原的备份集】里可以选择完整备份、差异备份或事务日志备份,SQL Server 2005十分智能,如果选择差异备份,系统会自动将上一个完整备份选择上;如果选择日志备份,系统也会自动将上一个完整备份以及所需要的差异备份和日志备份都选择上。换句话说,只要选择想恢复到的那个备份集即可,系统会自动选上要恢复到这个备份集的所有其他备份集。

说明:SQL Server 2005在【选择用于还原的备份集】区域里进行了完善工作,可以一次性选择多个备份集来还原数据库,如图18.12所示,选择完整备份和日志备份两个备份集,SQL Server 2005会自动按次序还原这些备份。

(3)如果没有其他的需要,设置完第二步后可以单击【确定】按钮进行还原操作,也可以在图18.12所示对话框里选择【选项】标签,进入如图18.14所示对话框。

图18.14 【选项】选项卡

(4)在如图18.14所示对话框里,可以设置以下选项:

l  【覆盖现有数据库】:选中该复选框则会覆盖所有现有数据库以及相关文件,包括已存在的同名的其他数据库或文件。

l  【保留复制设置】:选中该复选框则会将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置。不过该项只有在选择了【回滚未提交的事务,使数据库处于可以使用状态】选项才可以使用。

l  【还原每个备份之前进行提示】:选中该复选框则在还原每个备份设备前都会要求确认一次。

l  【限制访问还原的数据库】:选中该复选框则使还原的数据库仅供db_owner、dbcreator或sysadmin的成员使用。

l  【将数据库文件还原为】:在该区域里可以更改要还原到的任意目的文件的路径和名称。例如在备份完数据库之后,数据库文件移动过位置,如果此时用移动过位置之前的数据库备份来还原数据库,则会把数据库文件还原到原来的位置。使用该项可以将数据库文件还原到新的位置。

l  【恢复状态】:在该区域里有三个选择项:
    如果选择了【回滚未提交的事务,使数据库处于可以使用状态。无法还原其他事务日志】单选框,则让数据库在还原后进入可正常使用的状态,并自动恢复尚未完成的事务,如果本次还原是还原的最后一次操作,可以选择该项。
    如果选择了【不对数据库执行任何操作,不回滚未提交的事务。可以还原其他事务日志】单选框,则在还原后数据库仍然无法正常使用,也不恢复未完成的事务操作,但可再继续还原事务日志备份或差异备份,让数据库能恢复到最接近目前的状态。
    如果选择了【使数据库处于只读模式。撤消未提交的事务,但将撤消操作保存在备用文件中,以便可以恢复效果逆转】单选框,则在还原后做恢复未完成事务的操作,并使数据库处于只读状态,为了可再继续还原后的事务日志备份,还必须指定一个还原文件来存放被恢复的事务内容。

(5)设置完毕后,单击【确定】按钮完成还原操作。

18.5.4  还原文件和文件组备份

还原文件和文件组备份与还原完整备份、差异备份和事务日志备份有点区别:

(1)启动【SQL Server Management Studio】,右击要还原的数据库,在弹出的快捷菜单里选择【任务】à【还原】à【文件和文件组】,弹出如图8-15所示【还原文件和文件组】对话框。

图18.15 【还原文件和文件组】对话框

(2)如图18.15所示的【还原文件和文件组】对话框里,可以设置以下选项:

l  【目标数据库】:在该下拉列表框里可以选择要还原的数据库。

l  【还原的源】:在该区域里可以选择要用来还原的备份文件或备份设备,用法与还原数据库完整备份中的一样,在此就不赘述了。

l  【选择用于还原的备份集】:在该区域里可以选择要还原的备份集,从图18.15中可以看出,在该区域里所列出备份集不仅仅包含文件和文件组的备份,还包括完整备份、差异备份和事务备份,无论选择哪种备份,都是允许的。换句话说,在此不仅仅可以恢复文件和文件组备份,也可以恢复完整备份、差异备份和事务备份。

(3)选择完毕后可以单击【确定】按钮完成还原操作,也可以选择【选项】选项项进行进一步设置,其设置与上面介绍的相同。

注意:在进行完文件和文件组备份之后,还必须进行一次事务日志备份,否则无法还原文件和文件组备份。

18.5.5  从现有的备份创建新的数据库

通常数据库设计员都会在本地计算机上设计并调试数据库,在数据库初始化完毕之后再上传到服务器上。在前面曾经提到用可以先将数据库文件分离,然后将其传到服务器上再附加。使用这种方法附加的数据库不能改名。在SQL Server 2005中还可以先将本地计算机上的数据库备份,再通过备份文件在服务器上创建一个新的数据库,此时新数据库的数据文件和数据库名都可以和原来的不一样。其方法为:

(1)启动【SQL Server Management Studio】,在【对象资源管理器里】选项【数据库实例名】à【数据库】。

(2)右击数据库,在弹出的快捷菜单里选择【还原数据库】选项,弹出如图18.12所示【还原数据库】对话框,不过该对话框里【目标数据库】下拉列表框和【源数据库】列表框里都是空白的。

(3)在【目标数据库】下拉列表框处输入新的数据库名。

(4)选择【源设备】单选框,并选择备份文件,然后在【选择用于还原的备份集】区域里选择用于还原的备份集。

(5)单击【选项】标签,进入如图18.14所示对话框,修改该对话框的【将数据库文件还原为】区域里的文件【还原为】的位置。

(6)完成后单击【确定】按钮完成新建数据库的操作。

完成后的新数据库拥有新的数据库名、新的数据库文件以及数据库文件存储的新位置。