第13章备份与恢复13.1备份的概念13.2备份数据库13.3恢复概述13.4本章总结13.5思考与实训练习学习目的:通过本章学习,你能够学到:1.数据库备份和恢复的基本概念。2.使用企业管理器和系统存储过程规划和执行备份操作。3.使用企业管理器和系统存储过程规划和执行恢复操作。13.1备份的概念备份就是对SQLServer数据库或事务日志进行备份,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。备份是恢复受损数据库最容易,把意外损失降低到最小的保障方法。没有备份,所有的数据都可能会丢失。SQLServer2000提供了四种备份方式:(一)完全数据库备份(Dadabase-complete):是指对数据库的完整备份,包括所有的数据及数据库对象。所有未完成的事务或者发生在备份过程中的事务都不会被备份。(二)差异备份或称增量备份(Dadabase-differential):是指将最近一次数据库备份以来发生的数据变化备份起来,因此差异备份实际上是一种增量数据库备份。与完整数据库备份相比,差异备份由于备份的数据量较小,所以备份和恢复所用的时间较短。(三)事务日志备份(Transactionlog):是指对数据库发生的事务进行备份,包括从上次进行事务日志备份、差异备份和数据库完全备份之后,所有已经完成的事务。(四)数据库文件和文件组备份(Fileandfilegroup):是指对数据库文件或文件夹进行备份,但不像完整的数据库备份那样,同时也进行事务日志备份。13.2备份数据库13.2.1创建备份设备13.2.2删除备份设备13.2.3备份数据库13.2.1创建备份设备在进行备份以前首先必须指定或创建备份设备,备份设备是用来存储数据库、事务日志或文件和文件组备份的存储介质,备份设备可以是硬盘、磁带或管道。当使用磁盘时,SQLServer允许将本地主机硬盘和远程主机上的硬盘作为备份设备,备份设备在硬盘中是以文件的方式存储的。创建备份设备有两种方法:一是使用SQLServer企业管理器创建备份设备二是使用系统存储过程创建备份设备。下面将分别通过具体实例加以介绍。操作步骤:2.使用系统存储过程创建备份设备在SQLServer中,可以使用sp_addumpdevice语句创建备份设备。[实例13.2]使用系统存储过程在本地磁盘上为学生库创建一个备份设备backup_学生。操作步骤:启动查询分析器,输入如下SQL语句:use学生库goexecsp_addumpdevice'disk','backup_学生','C:\ProgramFiles\MicrosoftSQLServer\MSSQL\BACKUP\bk_学生.bak'go按“F5”键或单击工具栏“执行查询”图标执行。我们在这里给出其命令格式如下:sp_addumpdevice[@devtype=]‘device_type’,[@logicalname=]’logical_name’,[@physicalname=]’physical_name’,[,{[@cntrltype=]controller_type|[@devstatus=]’device_status’}]命令格式说明:@devtype表示设备类型,其值可以为disk,pipe,tape。@logicalname表示设备的逻辑名称。@physicalname表示设备的实际名称。@cntrltype不同的取值代表不同的含义。2表示磁盘,5表示磁带,6表示管道。@devstatus表示设备状态,有两个选项:skip和noskip。13.2.2删除备份设备删除备份设备与创建的过程类似,只须在企业管理器中选中要删除的备份设备,在弹出的菜单中选择删除选项即可删除该备份设备。或者使用sp_dropdevice语句来删除备份设备。其语法如下:sp_dropdevice[‘logical_name’][,’delfile’]其中logical_name表示备份设备的逻辑名,delfile表示相对应的实体文件。当执行该存储过程时,delfile选项必须给出,否则备份设备相对应的实体文件仍旧存在。例如删除例13.2创建的备份设备可使用如下语句实现:sp_dropdevice‘backup_学生’,‘C:\ProgramFiles\MicrosoftSQLServer\MSSQL\BACKUP\bk_学生.bak’13.2.3备份数据库SQLServer系统提供了三种数据库备份操作的方法:一是SQLServer企业管理器二是备份向导三是Transact-SQL语句。下面将分别做以介绍。1、使用企业管理器进行数据库备份[实例13.3]使用企业管理器对学生库进行完全备份。2、使用备份向导进行数据库备份这种方法与前面介绍的使用企业管理器的方法大体相似,进入备份向导也是通过企业管理器,在企业管理器的界面中选择“工具”下拉菜单,在其中选择“向导”选项,在弹出的菜单中选择“管理”节点展开,选择“备份向导”,单击确定,则用户就可以根据向导去完成数据库备份工作,其中的一些选项设置与上例中相同,在此就不再赘诉。3、使用Transact-SQL语句进行数据库备份进行备份数据库的简单语句如下:BACKUPDATABASEdatabase_nameTObackup_device_name[,…n][WITHDIFFERENTIAL]其中,WITHDIFFERENTIAL表示增量备份。例如:将学生库备份到backup_学生设备中,可用如下语句实现:BACKUPDATABASE学生库TObackup_学生GO进行日志备份的语法如下:BACKUPLOGdatabase_nameTObackup_device_name[,…n][WITHNO_TRUNCATE]其中,WITHNO_TRUNCATE表示在完成事务日志备份后,并不清空原有日志的数据。这个可选项可以用在当数据库遭到损坏或数据库被标识为可疑时进行日志的备份。例如:备份学生库的日志文件到backuplog_学生设备中,可用如下语句实现:BACKUPLOG学生库TObackuplog_学生GO13.3恢复概述数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。数据库恢复是指将数据库备份加载到系统中的过程。系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。实现数据库的恢复可以通过企业管理器,也可以使用T-SQL语句来实现。13.3.1使用企业管理器恢复数据库[实例13.4]使用企业管理器恢复已经备份的学生库。13.3.2使用Transact-SQL语句恢复数据库[实例13.5]:从backup_学生备份设备中恢复数据库学生库,将其恢复到学生库1中。T-SQL语句提供了RESTORE命令进行恢复操作,其语法形式如下:Restoredatabase[frombackup_device[,…n]][with[[,]file=file_number][[,]move‘logical_file_name’to‘operating_system_file_name’][[,]replace][[,]{norecovery|recovery|standby=undo_file_name}]]命令说明,这里仅给出几个主要参数的说明,其他部分可参考联机丛书。File:表示恢复具有多个备份子集的备份介质中的那个备份子集。Move:表示把备份的数据库文件恢复到系统的某一位置缺省条件下,恢复到备份时的位置。Norecovery:表示恢复操作不回滚任何未提交的事务Recovery:表示回滚所有未提交的事务,在恢复结束后数据库就可以使用。Standby:表示数据库操作的UNDO文件。13.4本章总结(1)本章介绍了备份数据库的必要性。备份就是对SQLServer数据库或事务日志进行备份,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。(2)SQLServer2000提供了四种备份方式分别是完全数据库备份;差异备份或称增量备份;事务日志备份;数据库文件和文件组备份。每种备份方式都具有各自的特点。(3)介绍了备份数据库的过程,创建和删除备份设备的方法,可以使用企业管理器也可以使用T-SQL语句来实现。然后进行数据库的备份操作,介绍了三种方法:企业管理器,备份向导和T-SQL语句。(4)本章还介绍了数据库恢复的必要性。数据库备份后,一旦系统发生崩溃或者执行了错误的数据库操作,就可以从备份文件中恢复数据库。数据库恢复是指将数据库备份加载到系统中的过程。系统在恢复数据库的过程中,自动执行安全性检查、重建数据库结构以及完整数据库内容。13.5思考与实训练习13.5.1思考题1.什么是数据库备份,有那几种类型?2.为什么要进行数据库的备份与恢复?3.创建备份设备的方法有哪些?4.如何备份一个数据库?5.恢复数据库有那几种方法?6.如何恢复数据库?13.5.2实训1、实训目的(1)掌握SQLServer2000中创建删除备份设备的方法,以及备份和恢复数据库的方法。(2)掌握使用企业管理器和T-SQL语句两种方法进行备份和恢复。2、实训环境SQLServer2000的企业管理器和查询分析器。3、实训内容(1)使用企业管理器对Northwind数据库进行备份。①通过企业管理器创建一个备份设备NT-bak。②该设备的物理文件路径为D盘North文件夹,文件名为NT-bak.bak。③使用企业管理器对该数据库进行完全备份,对数据库的描述为“第一次备份”。④将该数据库备份到NT-bak的设备上。⑤指定在每次启动SQLServerAgent服务时对Northwind数据库进行备份。(2)使用T-SQL语句对pubs数据库进行备份。①使用T-SQL语句创建一个disk类型的备份设备pub-bak。②该设备的物理文件为D盘pubs文件夹中的pub-bak.bak。③在pubs数据库中创建一个表格mytest。④使用T-SQL语句对该数据库进行增量备份。⑤将该数据库备份到pub-bak的设备上。(3)使用企业管理器对Northwind数据库进行恢复,比较恢复前后的不同。①在Northwind数据库中创建一个表格名为test。②将实验(1)中的关于该数据库的备份恢复到Northwind数据库中。③比较恢复前后Northwind数据库的不同(4)使用T-SQL语句对pubs数据库进行恢复。①使用T-SQL语句将实验(2)中的关于该数据库的备份恢复到pubs数据库中。②在查询分析器中观察执行后的消息框中,对该操作所有的时间。③将实验(2)中的pubs数据库进行完全备份。④使用T-SQL语句将③中的关于该数据库的备份恢复到pubs数据库中。⑤在查询分析器中观察执行后的消息框中,对该操作所有的时间与②进行比较,观察所进行操作描述的异同。4.实训要求(1)将实训3的内容在SQLServer2000环境中调试成功,并将编写的程序调试、运行正确成功后,存入磁盘中。(2)每次实训后,总结一下实训的重点内容和应注意的问题,并写成实训报告的形式上交。(5)如何进行数据库恢复,本章介绍了两种方式:企业管理器和T-SQL语句。(6)在进行数据库的备份和还原过程中,还有一些参数设置的细节问题,这些需要读者练习的过程中来熟悉。