1、第第1111章章 数据库备份与恢复数据库备份与恢复 u本章导读本章导读Microsoft SQL Server Microsoft SQL Server 提供了高性能的备份和还原功能。提供了高性能的备份和还原功能。SQL Server SQL Server 备备份和还原组件提供了重要的保护手段,以保护存储在份和还原组件提供了重要的保护手段,以保护存储在 SQL Server SQL Server 数据库数据库中的关键数据。实施计划妥善的备份和还原策略可保护数据库,避免由于中的关键数据。实施计划妥善的备份和还原策略可保护数据库,避免由于各种故障造成的损坏而丢失数据。通过还原一组备份并恢复数据库来
2、测试各种故障造成的损坏而丢失数据。通过还原一组备份并恢复数据库来测试的策略,为有效地应对灾难做好准备。的策略,为有效地应对灾难做好准备。本章介绍如何创建数据库备份以及本章介绍如何创建数据库备份以及如何还原。如何还原。u学习目的与要求学习目的与要求掌握数据库备份的概念,备份的方法,还原的方法。掌握数据库备份的概念,备份的方法,还原的方法。1.备份内容备份内容数据库中需备份的内容主要包括系统数据库、用户数据库数据库中需备份的内容主要包括系统数据库、用户数据库和事务日志。和事务日志。系统数据库记录了确保系统正常运行的重要信息,例如系统数据库记录了确保系统正常运行的重要信息,例如master记录了用户
3、帐户、环境变量和系统错误信息等;记录了用户帐户、环境变量和系统错误信息等;msdb记记录了有关录了有关Agent服务的全部信息,如作业历史和调度信息等;服务的全部信息,如作业历史和调度信息等;model提供了创建用户数据库的模板信息。提供了创建用户数据库的模板信息。用户数据库是存储用户数据的存储空间集,要根据数据的用户数据库是存储用户数据的存储空间集,要根据数据的重要程度,设计与规划备份方案。重要程度,设计与规划备份方案。事务日志文件记录了用户对数据的各种操作,平时系统会事务日志文件记录了用户对数据的各种操作,平时系统会自动管理和维护所有的数据库事务日志。每个记录包括:事务自动管理和维护所有的
4、数据库事务日志。每个记录包括:事务标识、操作的类型、更新前数据的旧值标识、操作的类型、更新前数据的旧值(前像前像)、更新后数据的、更新后数据的新值新值(后像后像)。11.1数据库备份与恢复策略数据库备份与恢复策略11.1.1 数据库备份计划数据库备份计划(1)(1)事务事务T T开始,日志记录为开始,日志记录为(T,start,)(T,start,)(2)(2)事务事务T T修改对象修改对象A A,日志记录为,日志记录为(T,update,A,(T,update,A,前像前像,后像后像)(3)T(3)T插入对象插入对象A A,日志记录为,日志记录为(T,insert,A,(T,insert,A
5、,后像后像)(4)T(4)T删除对象删除对象A A,日志记录为,日志记录为(T,delete,A,(T,delete,A,前像前像,),)(5)(5)事务事务T T提交,日志记录为提交,日志记录为(T,commit,)(T,commit,)(6)(6)事务事务T T回滚,日志记录为回滚,日志记录为(T,rollback,)(T,rollback,)与数据库备份相比,事务日志备份所需要的时间较少,但与数据库备份相比,事务日志备份所需要的时间较少,但恢复需要的时间较长。恢复需要的时间较长。11.1数据库备份与恢复策略数据库备份与恢复策略2.备份类型备份类型(1)完整备份)完整备份(2)事务日志备份
6、)事务日志备份(3)差异备份)差异备份11.1数据库备份与恢复策略数据库备份与恢复策略3备份组件备份组件SQL Server支持文件和文件组备份,即备份某支持文件和文件组备份,即备份某个数据库文件或文件组。这种备份与事务日志备个数据库文件或文件组。这种备份与事务日志备份结合使用才有意义。如某数据库中有两个数据份结合使用才有意义。如某数据库中有两个数据文件,一次仅备份一个文件,而且在每个数据文文件,一次仅备份一个文件,而且在每个数据文件备份后,都要进行日志备份。在恢复数据时,件备份后,都要进行日志备份。在恢复数据时,可使用事务日志使所有的数据文件恢复到同一个可使用事务日志使所有的数据文件恢复到同
7、一个时间点。如果出现故障,则可以只还原被破坏的时间点。如果出现故障,则可以只还原被破坏的文件或文件组。文件或文件组。11.1数据库备份与恢复策略数据库备份与恢复策略4备份频率备份频率备份频率即相差多长时间进行备份。备份频率与备份频率即相差多长时间进行备份。备份频率与系统恢复的工作量和事务量有关。若用户数据库中系统恢复的工作量和事务量有关。若用户数据库中执行了加入数据,则创建索引等操作时,应该对用执行了加入数据,则创建索引等操作时,应该对用户数据库进行备份。此外如果清除了事务日志,也户数据库进行备份。此外如果清除了事务日志,也应该备份数据库。应该备份数据库。5备份存储介质备份存储介质6数据库恢复
8、数据库恢复数据库恢复是指当数据库系统遭到破坏时,通过数据库恢复是指当数据库系统遭到破坏时,通过一些技术,使数据库恢复到遭到破坏前的正确状态一些技术,使数据库恢复到遭到破坏前的正确状态。恢复的基本原则就是冗余,即数据的重复存储。恢复的基本原则就是冗余,即数据的重复存储。11.1数据库备份与恢复策略数据库备份与恢复策略11.1.2故障还原模型故障还原模型 SQL Server简化了备份和还原过程,提供了三种简化了备份和还原过程,提供了三种故障恢复模型,各种模型都有自己的含义、优缺点故障恢复模型,各种模型都有自己的含义、优缺点和适用范围,合理地使用这三种模型可以有效地管和适用范围,合理地使用这三种模
9、型可以有效地管理数据库,最大限度地减小损失。理数据库,最大限度地减小损失。设置故障还原模型的操作步骤如下。设置故障还原模型的操作步骤如下。(1)展开要设置的数据库并右击,在弹出的快捷菜单展开要设置的数据库并右击,在弹出的快捷菜单上选择上选择“属性属性”命令。命令。(2)在在“数据库属性数据库属性”对话框中切换到对话框中切换到“选项选项”选项选项卡,如图卡,如图11.1所示,可以看到所示,可以看到“恢复模式恢复模式”下拉列下拉列表框中有三个选项:大容量日志、简单、完整。表框中有三个选项:大容量日志、简单、完整。11.1.2故障还原模型故障还原模型1简单恢复模型2完整恢复模型3大容量日志恢复模型1
10、1.1.2故障还原模型故障还原模型1.1.创建备份设备创建备份设备2.2.进行数据库的完整备份、差异备份、日志备份、文件和进行数据库的完整备份、差异备份、日志备份、文件和文件组备份文件组备份3.3.恢复数据库恢复数据库11.1.3备份和恢复的流程备份和恢复的流程1 1建立备份设备建立备份设备1 1)格式)格式sp_addumpdevice sp_addumpdevice 备份设备类型备份设备类型,备份设备逻辑名备份设备逻辑名,备份设备物理名称备份设备物理名称 2 2)功能)功能可以系统使用储过程可以系统使用储过程sp_addumpdevicesp_addumpdevice添加备份设备。添加备份
11、设备。备份设备的类型可以是备份设备的类型可以是diskdisk、pipepipe或或tapetape。disk disk 以硬盘以硬盘文件作为备份设备;文件作为备份设备;pipe pipe 是命名管道备份设备;是命名管道备份设备;tapetape是磁带是磁带备份设备。备份设备。如果成功建立设备,则返回值为如果成功建立设备,则返回值为0 0,否则为,否则为1 1。11.2备份与恢复数据库备份与恢复数据库11.2.1备份设备备份设备11.2备份与恢复数据库备份与恢复数据库11.2.1备份设备备份设备【例例11.1】创建一个本地磁盘备份设备,设备逻辑名创建一个本地磁盘备份设备,设备逻辑名为为scbk
12、,备份设备的物理名称为,备份设备的物理名称为studentcorebk.bak。方法一:使用方法一:使用SQL命令。命令。USE studentcourseE X E C s p _ a d d u m p d e v i c e d i s k ,s c b k ,c:dumpstudentcorebk.bak方法二:使用方法二:使用Management Studio建立备份设备。建立备份设备。11.2备份与恢复数据库备份与恢复数据库11.2.1备份设备备份设备2查看备份设备的属性查看备份设备的属性【例例11.2】查看备份设备查看备份设备scbk的属性。的属性。方法一:使用方法一:使用Man
13、agement Studio查看备份设备。查看备份设备。方法二:使用方法二:使用SQL命令。命令。sp_helpdevice scbk1 1)格式)格式sp_dropdevicesp_dropdevice设备的逻辑名设备的逻辑名,delfiledelfile 2 2)功能)功能 从从SQL ServerSQL Server除去数据库设备或备份设备。如果将物除去数据库设备或备份设备。如果将物理备份设备文件指定为理备份设备文件指定为 DELFILEDELFILE,将会删除物理备份设备文件,将会删除物理备份设备文件,否则只删除逻辑设备名。返回否则只删除逻辑设备名。返回0 0,表示成功删除,返回,表示
14、成功删除,返回1 1表示删除表示删除失败。不能在事务内部使用失败。不能在事务内部使用 sp_dropdevicesp_dropdevice。3删除备份设备删除备份设备11.2备份与恢复数据库备份与恢复数据库【例例11.3】删除备份设备,设备逻辑名为删除备份设备,设备逻辑名为scbk,但不删,但不删除物理备份文件。除物理备份文件。方法一:使用方法一:使用SQL命令。命令。EXEC sp_dropdevice scbk方法二:使用方法二:使用Management Studio删除备份设备。删除备份设备。【例例11.4】使用命令创建磁盘备份设备使用命令创建磁盘备份设备mydisk1,其物理,其物理名
15、称为名称为d:dumpdisk1.bak。接着删除备份设备。接着删除备份设备mydisk1与物与物理备份文件。理备份文件。EXEC sp_addumpdevice disk,mydisk1,c:dumpdisk1.bakEXEC sp_dropdevice mydisk1,delfile1.1.备份数据库备份数据库1 1)格式)格式BACKUP DATABASE BACKUP DATABASE 数据库名数据库名 ,.n ,.n TO TO ,.n ,.n WITH ,DIFFERENTIAL WITH ,DIFFERENTIAL ,EXPIREDATE=,EXPIREDATE=日期日期|RET
16、AINDAYS=|RETAINDAYS=天数天数 ,INIT|NOINIT ,INIT|NOINIT ,NAME=,NAME=备份集名称备份集名称 ,RESTART ,STATS =percentage ,RESTART ,STATS =percentage 2 2)功能)功能 将指定数据库备份到指定备份设备。备份设备可以是逻辑备份将指定数据库备份到指定备份设备。备份设备可以是逻辑备份设备名或物理备份设备名。设备名或物理备份设备名。11.2.2 备份数据库备份数据库11.2.2 备份数据库备份数据库【例例11.5】完全备份数据库完全备份数据库studentcourse到到scbk备份设备份设备
17、上,物理备份文件备上,物理备份文件studentcorebk.bak。方法一:使用方法一:使用SQL命令。命令。E X E C s p _ a d d u m p d e v i c e disk,scbk,c:dumpstudentcorebk.bakBACKUP DATABASE studentcourse TO DISK=c:dumpstudentcorebk.bak 或或BACKUP DATABASE studentcourse TO scbk或或BACKUP DATABASE studentcourse TO scbkWITH NAME=studentFullBackup-备份集为备
18、份集为studentFullBackup方法二:使用方法二:使用Management Studio备份数据库。备份数据库。11.2.2 备份数据库备份数据库【例例11.6】差异备份数据库差异备份数据库studentcourse到备份文件到备份文件studentcorebk.bak。BACKUP DATABASE studentcourse TO DISK=c:dumpstudentcorebk.bak WITH DIFFERENTIAL11.2.2 备份数据库备份数据库【例例11.7】重新将重新将studentcourse数据库完全备份到数据库完全备份到设备设备scbk,并覆盖该设备上原有的内
19、容。备份集,并覆盖该设备上原有的内容。备份集的名称为的名称为studentFullBackup。查看备份属性。查看备份属性。BACKUP database studentcourse TO scbk with init,name=studentFullBackup-备份集为备份集为studentFullBackupgosp_helpdevice scbk -查看备份属性查看备份属性11.2.2 备份数据库备份数据库【例例11.8】追加追加studentcourse数据库完全备份到设备数据库完全备份到设备scbk。备份集的名称为。备份集的名称为studentFullBackup。BACKUP d
20、atabase studentcourse TO scbk with noinit,-noinit可以省略,它是默认值。表示追加可以省略,它是默认值。表示追加 name=studentFullBackup-备份集为备份集为studentFullBackup2 2备份事务日志备份事务日志1 1)格式)格式BACKUP LOGBACKUP LOG数据库名数据库名 TO TO ,.n ,.n WITH WITH ,EXPIREDATE=,EXPIREDATE=日期日期|RETAINDAYS=|RETAINDAYS=天数天数 ,INIT|NOINIT ,NAME=,INIT|NOINIT ,NAME=
21、备份集名称备份集名称 ,NO_TRUNCATE ,NO_TRUNCATE ,NORECOVERY|STANDBY=standby_file_name ,NORECOVERY|STANDBY=standby_file_name ,RESTART ,STATS =percentage ,RESTART ,STATS =percentage 2 2)功能)功能 对数据库发生的事务进行备份,该日志是从上一次成功执行了对数据库发生的事务进行备份,该日志是从上一次成功执行了 LOG LOG 备份到当前日志的末尾。它仅对数据库事务日志进行备份,所以备份到当前日志的末尾。它仅对数据库事务日志进行备份,所以其需
22、要的磁盘空间和备份时间都比数据库备份少得多。其需要的磁盘空间和备份时间都比数据库备份少得多。11.2.2 备份数据库备份数据库【例例11.9】备份数据库备份数据库studentcourse的日志文件到备的日志文件到备份设备份设备scbk上,物理备份文件为上,物理备份文件为studentcorebk.bak,备份集名称为备份集名称为StudentLogBackup。BACKUP LOG studentcourse-LOG表示事务日志备份表示事务日志备份TO DISK=c:dumpstudentcorebk.bak WITH NAME=StudentLogBackup【例例11.10】将数据库将数
23、据库studentcourse的日志文件备份的日志文件备份到临时设备到临时设备“c:dumps1.bak”,“c:dumps2.bak”上,备上,备份集的名称为份集的名称为StudentLogBackup。BACKUP LOG studentcourse TO DISK=c:dumps1.bak,disk=c:dumps2.bakWITH NAME=StudentLogBackup如果从来没有从事务日志删除日志记录,逻辑日志就会一如果从来没有从事务日志删除日志记录,逻辑日志就会一直增长,直到填满容纳物理日志文件的磁盘上的所有可用空间直增长,直到填满容纳物理日志文件的磁盘上的所有可用空间。在某个
24、即时点,必须删除恢复或还原数据库时不再需要的旧。在某个即时点,必须删除恢复或还原数据库时不再需要的旧日志记录,以便为新日志记录腾出空间。删除这些日志记录以日志记录,以便为新日志记录腾出空间。删除这些日志记录以减小逻辑日志的大小的过程称为截断日志。减小逻辑日志的大小的过程称为截断日志。11.2.3截断事务日志截断事务日志DBCC SHRINKFILE(DBCC SHRINKFILE(该数据库的日志文件的逻辑名称,收缩后该数据库的日志文件的逻辑名称,收缩后的大小以的大小以MBMB为单位为单位)【例例11.1111.11】收缩收缩studentcoursestudentcourse数据库事务日志为数
25、据库事务日志为1MB1MB。DBCC SHRINKFILE(studentcourse_log,1)DBCC SHRINKFILE(studentcourse_log,1)11.2.3截断事务日志截断事务日志1 1还原数据库还原数据库1 1)格式)格式RESTORE DATABASE RESTORE DATABASE 数据库名数据库名 FROM FROM ,.n ,.n WITH PARTIAL WITH PARTIAL FILE=FILE=备份文件号备份文件号 ,MOVE ,MOVE 逻辑文件名逻辑文件名 TO TO 操作系统文件名操作系统文件名,.n ,.n ,RECOVERY|NOREC
26、OVERY|STANDBY=,RECOVERY|NORECOVERY|STANDBY=撤消文件名撤消文件名,STATS=percentage ,REPLACE ,STATS=percentage ,REPLACE 2 2)功能)功能还原数据库。还原数据库。11.2.4 数据库还原数据库还原【例例11.1211.12】将将studentcoursebackup.bakstudentcoursebackup.bak备份文件中的备备份文件中的备份号为份号为1 1的完整备份恢复到数据库的完整备份恢复到数据库studentcoursestudentcourse中。覆盖现有中。覆盖现有同名数据库。同名数据
27、库。方法一:使用方法一:使用SQLSQL命令。命令。RESTORE DATABASE studentcourse RESTORE DATABASE studentcourse FROM DISK=c:dumpstudentcorebk.bak FROM DISK=c:dumpstudentcorebk.bak WITH FILE=1,replaceWITH FILE=1,replace方法二:使用方法二:使用Management StudioManagement Studio恢复数据库。恢复数据库。11.2.4 数据库还原数据库还原【例例11.13】正在使用设备正在使用设备scbk,还原数据库
28、时,忽,还原数据库时,忽然断电,重新启动因服务器电源故障而中断的然断电,重新启动因服务器电源故障而中断的 RESTORE 操作。操作。RESTORE DATABASE studentcourseFROM scbk WITH RESTART,REPLACE2 2事务日志还原事务日志还原1 1)格式)格式RESTORE LOG RESTORE LOG 数据库名数据库名 FROM FROM ,.n WITH ,.n WITH ,FILE=,FILE=备份文件号备份文件号 ,MOVE ,MOVE 逻辑文件名逻辑文件名 TO TO 操作系统文件名操作系统文件名 ,.n ,.n ,RECOVERY|NOR
29、ECOVERY|STANDBY=,RECOVERY|NORECOVERY|STANDBY=standby_file_name standby_file_name ,STATS=percentage ,STATS=percentage ,STOPAT=,STOPAT=日期时间日期时间|,STOPATMARK=|,STOPATMARK=标记名标记名 AFTER datetime AFTER datetime|,STOPBEFOREMARK=|,STOPBEFOREMARK=标记名标记名 AFTER datetime AFTER datetime ,REPLACE ,REPLACE 2 2)功能)功
30、能还原数据库事务日志。还原数据库事务日志。11.2.4 数据库还原数据库还原11.2.4 数据库还原数据库还原【例例11.14】在备份过程中,可以产生备份序列。假设在备份过程中,可以产生备份序列。假设有下列事件序列。有下列事件序列。(1)创建备份设备创建备份设备studenttest。物理文件名称为。物理文件名称为c:dumpstudenttest.bak。E X E C s p _ a d d u m p d e v i c e disk,studenttest,c:dumpstudenttest.bak(2)完整备份完整备份studentcourse数据库到设备数据库到设备studentt
31、est。BACKUP DATABASE studentcourse TO studenttest(3)向向C表插入一条记录。表插入一条记录。USE studentcourseINSERT INTO c VALUES(C19,vb编程编程,3,null,程控程控)(4)备份数据库事务日志到设备备份数据库事务日志到设备studenttest。backup log studentcourse to studenttest(5)利用第利用第(2)步所得的完整备份,恢复到插入记步所得的完整备份,恢复到插入记录前的状态录前的状态(如图如图11.23所示所示)。use master -恢复数据库时,数据库不
32、能处于活动恢复数据库时,数据库不能处于活动状态状态 RESTORE DATABASE studentcourse FROM studenttestWITH file=1,NORECOVERY,REPLACE(6)利用第利用第(4)步所得的事务日志,恢复到插入记录后的步所得的事务日志,恢复到插入记录后的状态。状态。RESTORE log studentcourse FROM studenttestwith file=2【例例11.15】在备份过程中,可以产生备份序列。如图在备份过程中,可以产生备份序列。如图11.24所示,假设有下列事件序列。所示,假设有下列事件序列。(1)8点时:创建备份设备。
33、备份数据库到设备点时:创建备份设备。备份数据库到设备sdata。EXEC sp_addumpdevice disk,sdata,C:diskbaksdata.bakE X E C s p _ a d d u m p d e v i c e d i s k ,s d a t a l o g ,C:diskbaksdatalog.bakbackup database studentcourse to sdata(2)9点时:向点时:向C表插入一条记录。表插入一条记录。USE studentcourseINSERT INTO c VALUES(C10,大学英语大学英语,3,null,王明王明)(3)
34、10点时:备份事务日志到设备点时:备份事务日志到设备sdatalog。backup log studentcourse to sdatalog(4)11点时点时:向向C表插入一条记录。表插入一条记录。USE studentcourseINSERT INTO c VALUES(C11,动态网站制作动态网站制作,3,null,叶红叶红)(5)12点时:备份事务日志到设备点时:备份事务日志到设备sdatalog。backup log studentcourse to sdatalog(7)14点时:向点时:向C表插入一条记录。表插入一条记录。use studentcourseinsert into
35、c values(C12,网络编程网络编程,3,null,王海王海)(8)15点时:备份事务日志到设备点时:备份事务日志到设备sdatalogbackup log studentcourse to sdatalog(9)20点时:出现故障,数据库丢失。点时:出现故障,数据库丢失。(6)13点时:备份数据库到设备点时:备份数据库到设备sdata。backup database studentcourse to sdata任务:要求利用数据库备份还原任务:要求利用数据库备份还原15点之前的所有数据点之前的所有数据,如图,如图11.26所示。所示。方法一:使用方法一:使用13点时的数据库完整备份和点
36、时的数据库完整备份和15点时的事点时的事务日志备份。务日志备份。命令如下:命令如下:RESTORE DATABASE studentcourseFROM sdataWITH file=2,NORECOVERY,REPLACE -此时,数据此时,数据库无法打开,正在装载库无法打开,正在装载GORESTORE LOG studentcourseFROM sdatalogWITH file=3方法二:使用以前的数据库备份方法二:使用以前的数据库备份(早于最后一次创建早于最后一次创建的数据库备份的数据库备份)还原数据库。还原数据库。使用使用8点时的数据库备份,按照顺序依次恢复点时的数据库备份,按照顺序
37、依次恢复10点、点、12点、点、15点时的事务日志备份。点时的事务日志备份。RESTORE DATABASE studentcourseFROM sdataWITH file=1,NORECOVERY,REPLACE -恢复恢复8点时的数点时的数据库备份,据库备份,file=1GORESTORE LOG studentcourseFROM sdatalogWITH file=1,NORECOVERY,REPLACE -恢复恢复10点时的点时的日志备份,日志备份,file=1goRESTORE LOG studentcourseFROM sdatalogWITH file=2,NORECOVER
38、Y,REPLACE -恢复恢复12点时的点时的日志备份,日志备份,file=2goRESTORE LOG studentcourseFROM sdatalogWITH file=3 -恢复恢复15点时的日志备份,点时的日志备份,file=3【例例11.16】studentcourse数据库的数据文件是数据库的数据文件是studentcourse.mdf、seconds.ndf,日志文件是,日志文件是studentcourse_log.ldf。利用例。利用例11.15创建创建的备份设备的备份设备sdata、sdatalog还原完整数据库,并将已还原的数据还原完整数据库,并将已还原的数据库移动到库
39、移动到c:diskbak目录下,数据文件和日志文件分别是目录下,数据文件和日志文件分别是new.mdf、new.ndf、new.ldf,新的数据库名为,新的数据库名为new。方法一:使用方法一:使用SQL命令。命令。命令如下:命令如下:BACKUP database studentcourse TO sdata RESTORE FILELISTONLY FROM sdata-RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数语句用于确定待还原数据库内的文件数及名称。及名称。GORESTORE DATABASE new -恢复数据库恢复数据库FROM sdataWITH
40、 FILE=3,RECOVERY,MOVE studentcourse TO c:diskbaknew.mdf,MOVE studentcourse_log TO c:diskbaknew.ldf,MOVE seconds TO c:diskbaknew.ndf方法二:使用方法二:使用Management Studio恢复数据库。恢复数据库。【例例11.17】还原到指定标记处。还原到指定标记处。假设有下列事件序列。假设有下列事件序列。(1)6点时,对数据库进行备份。点时,对数据库进行备份。backup database studentcourse to sdataGO假设备份号为假设备份号为4
41、。(2)7点时,执行事务点时,执行事务SCUpdate,将成绩小于,将成绩小于60分的成分的成绩增加绩增加10%。BEGIN TRANSACTION SCUpdate WITH MARK Update SC valuesGOUSE studentcourseGOUPDATE sc SET 成绩成绩=成绩成绩*1.10 WHERE 成绩成绩60GOCOMMIT TRANSACTION SCUpdateGO(3)8点时发生错误。点时发生错误。需要将数据库恢复到标记名为需要将数据库恢复到标记名为SCUpdate处。操作步骤如下。处。操作步骤如下。备份日志备份日志USE masterGObackup
42、log studentcourse to sdataGO假设备份号为假设备份号为5。恢复到指定的标记处。即成绩小于恢复到指定的标记处。即成绩小于60分的成绩已经增加分的成绩已经增加了了10%。RESTORE DATABASE studentcourseFROM sdataWITH FILE=4,NORECOVERY,REPLACEGORESTORE LOG studentcourse FROM sdata WITH FILE=5,STOPATMARK=scUpdate 分离数据库是指将数据库从分离数据库是指将数据库从 SQL Server SQL Server 实例中删除,但实例中删除,但使数
43、据库在其数据文件和事务日志文件中保持不变。之后,就使数据库在其数据文件和事务日志文件中保持不变。之后,就可以使用这些文件将数据库附加到任何可以使用这些文件将数据库附加到任何 SQL Server SQL Server 实例,包实例,包括分离该数据库的服务器。括分离该数据库的服务器。【例例11.1811.18】从从SQL Server SQL Server 实例分离数据库实例分离数据库bookshopbookshop。方法一:使用方法一:使用Management StudioManagement Studio图形工具图形工具方法二:使用方法二:使用SQLSQL命令命令sp_detach_db b
44、ookshopsp_detach_db bookshop【例例11.1911.19】使用使用SQLSQL命令从命令从SQL Server SQL Server 实例分离数据库实例分离数据库studentcoursestudentcourse。sp_detach_db studentcoursesp_detach_db studentcourse11.3分离和附加数据库分离和附加数据库11.3.1 分离数据库分离数据库 可以附加复制的或分离的可以附加复制的或分离的 SQL Server SQL Server 数据库。在数据库。在 SQL SQL Server 2005 Server 2005 中
45、,数据库包含的全文文件随数据库一起附加。中,数据库包含的全文文件随数据库一起附加。【例例11.2011.20】附加数据库附加数据库studentcoursestudentcourse到到SQL ServerSQL Server服务器服务器中。中。方法一:使用方法一:使用Management StudioManagement Studio方法二:使用方法二:使用SQLSQL命令命令sp_attach_db sp_attach_db studentcourse,C:Datastudentcourse.mdf,studentcourse,C:Datastudentcourse.mdf,C:Logstudentcourse_log.ldf,C:Logstudentcourse_log.ldf,C:mydbseconds.ndfC:mydbseconds.ndf11.3.2附加数据库附加数据库