1、事事务管理管理1事务管理 l问题的引入的引入l事事务l并并发控制控制l数据数据库恢复恢复2问题的引入l多用多用户户同同时时操作数据操作数据库库l系系统统在在执执行用行用户户的的请请求求时时出出现现故障故障例如:例如:帐户A转帐给帐户B10000元。元。UPDATEYHZHSET余余额=余余额-10000WHERE帐号号=AUPDATEYHZHSET余余额=余余额+10000WHERE帐号号=B3 事事务的基本概念的基本概念l事事务(Transaction)l用用户定定义的一个的一个对数据数据库读写写操作序列操作序列l一个一个不可分割不可分割的工作的工作单位位l在关系数据在关系数据库中,事中,事
2、务可以是一条、一可以是一条、一组SQL语句,或整个程序。句,或整个程序。l事事务和程序的区和程序的区别?l程序包含多个事程序包含多个事务4 事事务的性的性质l原子性原子性(Atomicity)l事务中的操作要么都做,要么都不做(All or None)All or None)l一致性一致性(Consistency)l事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态l与原子性密切相关l隔离性隔离性(Isolation)l并发执行的各事务不能相互干扰l持持续性性/永久性永久性(Durability)l事务一旦提交,它对数据库的更新不再受后继操作或故障的影响DBMS中事中事务处理必理必
3、须保保证其其ACID特性,特性,这样才能保才能保证数据数据库中数中数据的安全和正确。据的安全和正确。5银行行转帐:从:从帐号号A中取出一万元,存入中取出一万元,存入帐号号B。l定定义一个事一个事务,该事事务包括两个操作包括两个操作l这两个操作要么全做,要么全不做两个操作要么全做,要么全不做l全做或者全不做,数据全做或者全不做,数据库都都处于一致性状于一致性状态。l如果只做一个操作,数据如果只做一个操作,数据库就就处于不一致性状于不一致性状态。B=B+1A=A-1BA 事事务的性的性质6T1的修改被的修改被T2覆盖了!覆盖了!读A=16AA-3写回写回A=13读A=16AA-1写回写回A=15T
4、2T1 事事务的性的性质7 事事务的基本概念的基本概念l事事务的开始和的开始和结束可以由用束可以由用户显式控制。式控制。lSQL定定义事事务的的语句句lBegin transactionBegin transaction(事事务开始开始)lCommit transaction Commit transaction(事事务提交,正常提交,正常结束,将更新束,将更新结果写入磁果写入磁盘)lRollback transactionRollback transaction(事事务回回滚,撤,撤销事事务中所有已完中所有已完成的更新成的更新)lSave transactionSave transactio
5、n(保存点,可以只撤消部分事保存点,可以只撤消部分事务)8 事事务的基本概念的基本概念l显式定式定义方式方式BEGINTRANSACTIONBEGINTRANSACTIONSQL语句句1SQL语句句1SQL语句句2SQL语句句2。COMMITROLLBACK9COMMIT事事务正常正常结束束提交提交事事务的所有操作(的所有操作(读+更新更新)事事务中所有中所有对数据数据库的更新的更新永久永久生效生效ROLLBACK事事务异常异常终止止l事事务运行的运行的过程中程中发生了故障,不能生了故障,不能继续执行,回行,回滚事事务的所有的所有更新更新操作操作l事事务回回滚到到开始开始时的状的状态 事事务的
6、基本概念的基本概念10事事务的基本概念的基本概念l隐含事含事务与自与自动提交提交ALTERINSERTCREATEDELETEDROPSELECTUPDATETRUNCATETABEL11例:例:删除除仓库“WH1”,并将并将职工工T表当中所有在表当中所有在“WH1”仓库中中职工工记录删除。除。事事务案例案例BEGINTRANSACTIONMYDELDELETEFROM仓库TWHERE仓库号号=WH1DELETEFROM职工工TWHERE仓库号号=WH1IFERROR0ROLLBACKTRANSACTIONMYDELELSECOMMITTRANSACTIONMYDEL12l恢复机制与并恢复机制
7、与并发控制机制的提出控制机制的提出l事务在运行过程中因某种故障被强行终止,数据库一致性被破坏,需进行恢复。l多个事务并行运行时,不同事务的各种操作交叉进行,为保证各事务的执行互不干扰,需进行并发控制。l事事务是恢复和并是恢复和并发控制的基本控制的基本单位位 事事务的基本概念的基本概念13l干干扰问题l解决干解决干扰封封锁l封封锁不当不当死死锁l封封锁与隔离与隔离级别并发控制14干扰问题l丢丢失更新失更新问题问题l未提交依未提交依赖赖(读读“脏脏”数据数据)问题问题l不一致分析不一致分析问题问题l幻象幻象读问题读问题15丢失更新问题l例:例:l旅客旅客A A来到来到A A售票售票处,要,要买一一
8、张1515日北京到上海的日北京到上海的1313次直次直达快速列达快速列车的的软卧卧车票,售票票,售票员A A(下称用下称用户A A)在在终端端A A查看剩余票信息;看剩余票信息;l几乎在同几乎在同时,旅客,旅客B B来到来到B B售票售票处,也要,也要买一一张1515日北京日北京到上海的到上海的1313次直达快速列次直达快速列车的的软卧卧车票,售票票,售票员B B(下称下称用用户B B)从从终端端B B查到了同到了同样的剩余票信息;的剩余票信息;l旅客旅客A A买了一了一张1515日日1313次次7 7车厢5 5号下号下铺的的软卧票,用卧票,用户A A更新剩余票信息并将它存入数据更新剩余票信息
9、并将它存入数据库;l这时用用户B B不知道用不知道用户A A已已经将将1515日日1313次次7 7车厢5 5号下号下铺的的软卧票卧票卖出,使旅客出,使旅客B B也也买了一了一张1515日日1313次次7 7车厢5 5号下号下铺的的软卧票,用卧票,用户B B更新剩余票信息并将它存入数据更新剩余票信息并将它存入数据库(重复了用(重复了用户A A已已经做做过的更新)。的更新)。总的效果:的效果:1515日日1313次次7 7车厢5 5号下号下铺的的软卧票卧票卖了两次。其原因是:允了两次。其原因是:允许了用了用户B B在在过时的的信息基信息基础上去更新数据上去更新数据库,而没有迫使他去,而没有迫使他
10、去看最新的信息。看最新的信息。16丢失更新问题 用用SQL术语描述描述丢失更新失更新问题17未提交依赖问题 l未提交依未提交依赖问题也称也称为读“脏”(DirtyRead)数据数据问题,查询一个已一个已经被其他事被其他事务更新、但尚未提交的元更新、但尚未提交的元组,将会引起未提交依,将会引起未提交依赖问题。18不一致分析不一致分析问题 l不一致分析不一致分析问题也称也称为不可重复不可重复读问题,很多,很多应用可能需要校用可能需要校验功能,功能,这时往往需要往往需要连续两次两次或多次或多次读数据数据进行校行校验和分析,和分析,结果由于其他果由于其他事事务的干的干扰,使得前后,使得前后结果不一致,
11、从而果不一致,从而产生生校校验错误(即不一致的(即不一致的分析)。分析)。19幻象幻象读问题l幻象幻象读问题与不一致分析与不一致分析问题有关,当事有关,当事务A读数据数据时,事,事务B在在对同一个关系同一个关系进行插入或行插入或删除操作,除操作,这时事事务A再再读同一条件的元同一条件的元组时,会会发现神秘地多出了一些元神秘地多出了一些元组或或丢失了一些元失了一些元组,把,把这种种现象称作幻象象称作幻象读。20可串行性l各各单个事个事务如能将数据如能将数据库从一个正确状从一个正确状态转变为另一个正确状另一个正确状态,则认为该事事务是正确的;是正确的;l按任何一个串行按任何一个串行顺序依次序依次执
12、行多个事行多个事务是正确是正确的。的。l事物交叉事物交叉过程是正确的,当且程是正确的,当且仅当其与串行当其与串行执行行过程等价,程等价,则事事务是可串行化的。是可串行化的。21可串行性例子:两个事例子:两个事务:初:初值:A=10,B=10。T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-522可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-523可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELEC
13、TBUPDATEB=B-524可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-525可串行性T1:SELECTAUPDATEA=A-5SELECTBUPDATEB=B+5T2:SELECTBUPDATEB=B-5不可串行化不可串行化26封锁 l封封锁的基本技的基本技术l封封锁机制机制lSQLServer中与封中与封锁有关的命令有关的命令l封封锁粒度粒度l意向意向锁27封封锁的基本技的基本技术l当需要当需要查询或更新数据或更新数据时,先,先对数据数据进行封行封锁,以避免来,以避免来自其他事自其他事务的干的干扰。针对不同
14、的干不同的干扰问题可以有不同的封可以有不同的封锁机制。机制。l以以丢失更新失更新问题为例,例,实施封施封锁的基本思想是:当一个用的基本思想是:当一个用户对一个表或一个表或记录进行更新行更新时,封,封锁该表或表或记录,使其他,使其他用用户不能在同一不能在同一时刻更新相同的表或刻更新相同的表或记录,迫使其他用,迫使其他用户在更新后的基在更新后的基础上(而不是在更新前的基上(而不是在更新前的基础上)再上)再实施另施另外的更新操作。外的更新操作。28封封锁的基本技的基本技术实施封施封锁以后的事件以后的事件进程程29封封锁机制机制 l共享封共享封锁l独占封独占封锁l更新封更新封锁 有些封有些封锁在在执行
15、完相行完相应操作后就自操作后就自动释放封放封锁,有些,有些封封锁则保持到事保持到事务结束(提交或撤消)束(提交或撤消)时才才释放(无放(无论如如何,所有的封何,所有的封锁都会在事都会在事务结束束时自自动释放)。放)。30共享封共享封锁 l共享封共享封锁是是为读操作操作设置的一种封置的一种封锁,所以也,所以也称作称作读封封锁,或,或简称称S锁,目的是想,目的是想读到一到一组不不变的数据,也就是在的数据,也就是在读数据的数据的过程中,不允程中,不允许其他用其他用户对该数据数据进行任何修改操作。行任何修改操作。这种封种封锁可以保可以保证最大的并最大的并发性,任何数量的用性,任何数量的用户都都可以同可
16、以同时对同同样的数据施加的数据施加这种共享种共享锁。已。已经实施共享施共享锁的表拒的表拒绝来自其他事来自其他事务的独占封的独占封锁和更新封和更新封锁。31独占封独占封锁 l独占封独占封锁也叫排他封也叫排他封锁,它是,它是为修改操作修改操作设置置的一种封的一种封锁,也称,也称为写封写封锁,或,或简称称为X锁,这是最是最严格的一格的一类封封锁。当需要。当需要对表表实施插入、施插入、删除或修改操作除或修改操作时,应该使用独占封使用独占封锁。已。已经实施独占封施独占封锁的表,拒的表,拒绝来自其他用来自其他用户的任何的任何封封锁。32更新封更新封锁 l当需要当需要对一个一个记录或一或一组记录进行更新行更
17、新时(只(只是修改,不包括插入和是修改,不包括插入和删除)使用更新封除)使用更新封锁,该封封锁的目的是防止其他用的目的是防止其他用户在同一在同一时刻修改刻修改同一同一记录。已。已经实施更新封施更新封锁的的记录,拒,拒绝来来自其他用自其他用户的任何封的任何封锁。33SQLServer中与封中与封锁有关的命令有关的命令 lSQLServer的封的封锁操作是在相关操作是在相关语句的句的“WITH()”子句中完成的,子句中完成的,该短短语可以在可以在SELECT、INSERT、UPDATE和和DELETE等等语句中指定表句中指定表级锁定的方式和范定的方式和范围。34SQLServer中与封中与封锁有关
18、的命令有关的命令l常用的封常用的封锁关关键词有:有:lTABLOCKTABLOCK:对表施行共享封表施行共享封锁,在,在读完数据后立刻完数据后立刻释放放封封锁,此,此类封封锁可以避免可以避免读“脏”数据,但不具有可数据,但不具有可重复重复读的特性。的特性。lHOLDLOCKHOLDLOCK:与与TABLOCKTABLOCK一起使用,可将共享一起使用,可将共享锁保留到事保留到事务完成,而不是在完成,而不是在读完数据后立即完数据后立即释放放锁,这样可以可以保保证数据的可重复独特性。数据的可重复独特性。35SQLServer中与封中与封锁有关的命令有关的命令lNOLOCKNOLOCK:不不进行封行封
19、锁,此关,此关键词仅应用于用于SELECTSELECT语句,句,这样可能会可能会读取未提交事取未提交事务的数据,即有可能的数据,即有可能发生生“脏”读。lTABLOCKXTABLOCKX:对表表实施独占封施独占封锁。lUPDLOCKUPDLOCK:对表中的指定元表中的指定元组实施更新封施更新封锁;这时其他其他事事务可以可以对同一表中的其他元同一表中的其他元组也也实施更新封施更新封锁,但是,但是不允不允许对表表实施共享封施共享封锁和独占封和独占封锁。36SQLServer中与封中与封锁有关的命令有关的命令R(日期日期,车次次,座座别,座位号座位号,状状态)状状态初初值为:NULLDECLAREd
20、datetime,tchar(6),schar(2),nchar(10)BEGINTRANSACTIONSELECTn=座位号座位号FROMRWITH(UPDLOCK)WHERE日日期期=dAND车次次=tAND座座别=sAND状状态ISNULLIFUPDATERSET状状态=YWHERE座座位位号号=nAND日日期期=dAND车次次=tAND座座别=sCOMMITTRANSACTIONELSEROLLBACKTRANSACTION37封封锁粒度粒度l封封锁的的对象可以是表、也可以是元象可以是表、也可以是元组等,我等,我们把把封封锁对象的大小称象的大小称为封封锁粒度(粒度(Granularit
21、y)。)。l封封锁的的对象可以是象可以是逻辑单元(如表和元元(如表和元组等),等),也可以是物理也可以是物理单元(如数据元(如数据页和数据和数据块等)。等)。l数据数据库管理系管理系统一般都具有多粒度一般都具有多粒度锁定功能,允定功能,允许一个事一个事务锁定不同定不同类型的型的资源。源。38封封锁粒度粒度l锁定在定在较小的粒度(例如行)可以增加并小的粒度(例如行)可以增加并发操作的性能,操作的性能,但系但系统开开销也也较大。大。这是因是因为如果封如果封锁的粒度小,的粒度小,则意意味着需要的味着需要的锁多,从而需要系多,从而需要系统控制更多的控制更多的锁。l锁定在定在较大的粒度(例如表)会降低操
22、作的并大的粒度(例如表)会降低操作的并发性,性,这是因是因为锁定整个表限制了其他事定整个表限制了其他事务对表中任意部分表中任意部分进行行访问。封。封锁粒度大,粒度大,则不需要太多的封不需要太多的封锁,由于需要,由于需要维护的的锁较少,所以系少,所以系统开开销较低。低。39意向意向锁 l为了降低封了降低封锁的成本,提高并的成本,提高并发的性能,数据的性能,数据库管理系管理系统还支持一种意向支持一种意向锁(IntentionLock)。)。l意向意向锁表示一种封表示一种封锁意向,当需要在某些底意向,当需要在某些底层资源上(如元源上(如元组)获取封取封锁时,可以先,可以先对高高层资源源(如表)(如表
23、)实施意向施意向锁。40死死锁 l产生死生死锁的原因的原因l避免死避免死锁l发现死死锁l解决死解决死锁41产生死生死锁的原因的原因l右右图示意了两个并示意了两个并发事事务所所发生事件的序生事件的序列,两个程序都列,两个程序都为了了等待等待对方方释放数据放数据资源而源而产生死生死锁。42避免死避免死锁 l相同相同顺序法序法l所有的用所有的用户程序程序约定都按相同的定都按相同的顺序来封序来封锁表表 l一次封一次封锁法法l为了完成一个事了完成一个事务,一次性封,一次性封锁所需要的全部所需要的全部表表 43避免死避免死锁的封的封锁 44发现死死锁l超超时法法l即一个事即一个事务在等待的在等待的时间超超
24、过了了规定的定的时限限后就后就认为发生了死生了死锁。l这种方法非常不可靠,如果种方法非常不可靠,如果设置的等待置的等待时限限长,则不能及不能及时发现死死锁;如果;如果设置的等待置的等待时限短,限短,则可能会将没有可能会将没有发生死生死锁的事的事务误判判为死死锁。45发现死死锁l等待等待图法法l即通即通过有向有向图判定事判定事务是否是是否是可串行化的,如果是可串行化的,如果是则说明没明没有有发生死生死锁,否,否则说明明发生了生了死死锁。l具体思路是:用具体思路是:用节点来表示正点来表示正在运行的事在运行的事务,用有向,用有向边来表来表示事示事务之之间的等待关系,如右的等待关系,如右图所示,如果有
25、向所示,如果有向图中中发现回回路,路,则说明明发生了死生了死锁。46解决死解决死锁l发现死死锁后解决死后解决死锁的一般的一般策略是:自策略是:自动使使“年年轻”的的事事务(即完成工作量少的事(即完成工作量少的事务)先退回去,然后)先退回去,然后让“年年老老”的事的事务(即完成工作量(即完成工作量多的事多的事务)先)先执行,等行,等“年年老老”的事的事务完成并完成并释放封放封锁后,后,“年年轻”的事的事务再重新再重新执行。行。47隔离级别l在避免干在避免干扰扰的情况下,适当的降低隔离的情况下,适当的降低隔离级别级别,从而提高并从而提高并发发的操作效率。的操作效率。l隔离隔离级别级别越低,并越低,
26、并发发操作效率越高,但是操作效率越高,但是产产生生干干扰扰的可能性也越大。的可能性也越大。l隔离隔离级别级别越高,并越高,并发发操作效率越低,同操作效率越低,同时产时产生生干干扰扰的可能性也越小。的可能性也越小。l在在设计应设计应用用时时,可以在所能容忍的干,可以在所能容忍的干扰扰程度范程度范围围内,尽可能降低隔离内,尽可能降低隔离级别级别,提高,提高应应用的用的执执行行效率。效率。48隔离级别l未提交未提交读读(READUNCOMMITTED):最低):最低级级别别,仅仅可保可保证证不不读读取物理取物理损损坏的数据,隔离坏的数据,隔离级级别别最低。最低。l提交提交读读(READCOMMITT
27、ED):):SQLServer默默认级别认级别,可以保,可以保证证不不读读取取“脏脏”数据数据l可重复可重复读读(REPEATABLEREAD):可以保):可以保证证读读一致性,避免不一致分析一致性,避免不一致分析问题问题。l可串行化(可串行化(SERIALIZABLE):事):事务务隔离的最隔离的最高高级别级别,事,事务务之之间间完全隔离。完全隔离。SQL支持支持4种隔离种隔离级别:49隔离级别SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTEDREADCOMMITTEDREPEATABLEREADSERIALIZABLE设置隔离置隔离级别的命令的命令50数
28、据数据库恢复恢复l数据数据库恢复概述恢复概述l备份份l恢复与恢复与还原原51数据数据库恢复概述恢复概述l故障是不可避免的故障是不可避免的l计算机硬件故障算机硬件故障l系系统软件和件和应用用软件的件的错误l操作操作员的失的失误l恶意的破坏意的破坏l故障的影响故障的影响l运行事运行事务非正常中断非正常中断l破坏数据破坏数据库52l数据数据库管理系管理系统对故障的故障的对策策lDBMS提供恢复子系提供恢复子系统l保保证故障故障发生后,能把数据生后,能把数据库中的数据从中的数据从错误状状态恢复到某种恢复到某种逻辑一致的状一致的状态l保保证事事务ACIDl恢复技恢复技术是衡量系是衡量系统优劣的重要指劣的
29、重要指标数据数据库恢复概述恢复概述53故障故障类型型l事事务故障故障l系系统故障故障l磁磁盘介介质故障故障54事务故障l什么是事什么是事务故障故障l某个事某个事务在运行在运行过程中由于种种原因未运行至正常程中由于种种原因未运行至正常终止点就夭折了止点就夭折了l事事务故障的常故障的常见原因原因l输入数据有入数据有误l运算溢出运算溢出l违反了某些完整性限制反了某些完整性限制l某些某些应用程序出用程序出错l并行事并行事务发生死生死锁l。55事事务故障的恢复故障的恢复l发生事生事务故障故障时,夭折的事,夭折的事务可能已把可能已把对数据数据库的部分修改写回磁的部分修改写回磁盘l事事务故障的恢复:撤消故障
30、的恢复:撤消该事事务l清除清除该事事务对数据数据库的所有修改,使得的所有修改,使得这个事个事务象根本没有启象根本没有启动过一一样56系系统故障故障l什么是系什么是系统故障故障l整个系整个系统的正常运行突然被破坏的正常运行突然被破坏l所有正在运行的事所有正在运行的事务都非正常都非正常终止止l内存中数据内存中数据库缓冲区的信息全部冲区的信息全部丢失失l外部存外部存储设备上的数据未受影响上的数据未受影响57系系统故障的恢复故障的恢复l清除尚未完成的事清除尚未完成的事务对数据数据库的所有修改的所有修改l系系统重新启重新启动时,恢复程序要,恢复程序要强行撤消所有行撤消所有未完成事未完成事务l将将缓冲区中
31、已完成事冲区中已完成事务提交的提交的结果写入数据果写入数据库l系系统重新启重新启动时,恢复程序需要重做所有已,恢复程序需要重做所有已提交的事提交的事务58介介质故障故障l硬件故障使存硬件故障使存储在外存中的数据部分在外存中的数据部分丢失或全失或全部部丢失失l介介质故障比前两故障比前两类故障的可能性小得多,但破故障的可能性小得多,但破坏性大得多坏性大得多59介介质故障的恢复故障的恢复l装入数据装入数据库发生介生介质故障前某个故障前某个时刻的数据副刻的数据副本本l重做自此重做自此时始的所有成功事始的所有成功事务,将,将这些事些事务已已提交的提交的结果重新果重新记入数据入数据库60备份份类型型l双机
32、双机热备份份l双工双工备份份l磁磁盘镜像像l冗余磁冗余磁盘阵列列l数据数据库备份技份技术61日志日志l对备对备份的份的补补充,充,记录记录所有所有对对数据数据库库的更新操作。的更新操作。注意:注意:应该将日志和主数据将日志和主数据库安排在不同的存安排在不同的存储设备上。上。62恢复恢复类型型l简单恢复恢复允允许将数据将数据库恢复到最新的恢复到最新的备份。份。l完全恢复完全恢复允允许将数据将数据库恢复到故障点状恢复到故障点状态。ALTERDATABASE仓库管理管理SETRECOVERYFULLALTERDATABASE仓库管理管理SETRECOVERYSIMPLE63备份的份的类型型l全全备备
33、份份l增量增量备备份份l事事务务日志日志备备份份l文件和文件文件和文件组备组备份份64全全备份份l完整地完整地备份整个数据份整个数据库,同,同时也也备份与份与该数据数据库相关的事相关的事务处理日志。理日志。BACKUPDATABASEdatabase_nameTODISK|TAPE=physical_backup_device_name例:将例:将“仓库管理管理”数据数据库完全完全备份到份到H盘根目根目录下。下。BACKUPDATABASE仓库管理管理TODISK=H:CKGL.BAK65增量增量备份份l只只备备份自上次数据份自上次数据库备库备份后份后发发生更改的数据。生更改的数据。BACKU
34、PDATABASEdatabase_nameTODISK|TAPE=physical_backup_device_nameWITHDIFFERENTIAL例:将例:将“仓库管理管理”数据数据库增量增量备份到份到H盘根目根目录下。下。BACKUPDATABASE仓库管理管理TODISK=H:CKGL1.BAKWITHDIFFERENTIAL66注:注:增量增量备份一定是在全份一定是在全备份的基份的基础上上进行的,在一次全行的,在一次全备份后可以份后可以连续进行增量行增量备份。份。增量增量备份会增加份会增加备份管理的份管理的难度。度。增量增量备份份67事事务日志日志备份份l事事务日志日志备份序列提
35、供了份序列提供了连续的事的事务信息信息链,可支,可支持从全持从全备份,增量份,增量备份或文件份或文件备份份进行快速恢复。行快速恢复。BACKUPLOGdatabase_nameTODISK|TAPE=physical_backup_device_name例:将例:将“仓库管理管理”数据数据库的事的事务日志日志备份到份到H盘根目根目录下。下。BACKUPLOG仓库管理管理TODISK=H:CKGLLOG.BAK注:注:简单恢复模型不允恢复模型不允许备份事份事务日志。日志。68文件和文件文件和文件组备份份l可以可以备份和恢复数据份和恢复数据库中的个中的个别文件。文件。l文件文件备份和恢复操作必份和
36、恢复操作必须与事与事务日志日志备份一起份一起使用。因此,文件使用。因此,文件备份不适用于份不适用于简单恢复模型。恢复模型。l必必须在在创建文件建文件备份之后才能份之后才能创建事建事务日志日志备份。份。69文件和文件文件和文件组备份份BACKUPDATABASEdatabase_nameFILE=logic_file_list|FILEGROUP=filegroup_listTODISK|TAPE=physical_backup_device_name例:将例:将“仓库管理管理”数据数据库中的中的“仓库管理管理_DATA”文件文件备份到份到H盘根目根目录下。下。BACKUPDATABASE仓库管
37、理管理FILE=仓库管理管理_DATATODISK=H:CKGLDATA.BAK70恢复或恢复或还原原l恢复整个数据恢复整个数据库库l恢复数据恢复数据库库的部分内容的部分内容l恢复特定的文件或文件恢复特定的文件或文件组组l恢复事恢复事务务71根据数据根据数据库全全备份份进行恢复行恢复RESTOREDATEBASEdatabase_nameFROMDISK|TAPE=physical_backup_device_nameWITH,NORECOVERY|RECOVERY,REPLACE注注:如果在数据如果在数据库恢复之后即使用数据恢复之后即使用数据库,应该选择RECOVERY;如果在数据如果在数据
38、库恢复之后恢复之后还有后有后续的的RESTORE操操作,作,则应改改为指定指定NORECOVERY。72根据增量根据增量备份份进行恢复行恢复l已已经使用使用RESTOREDATEBASE命令完成了全命令完成了全备份的份的恢复,同恢复,同时指定了指定了NORECOVERY;l在在进行增量恢复行增量恢复时根据需要指定根据需要指定RECOVERY或或NORECOVERY字句;字句;l如果有多个增量如果有多个增量备份,份,则一定要按照一定要按照备份的先后份的先后顺序序进行恢复。行恢复。73根据事根据事务日志日志进行恢复行恢复l在恢复事在恢复事务日志日志备份之前需要首先恢复数据份之前需要首先恢复数据库全
39、全备份或增量数据份或增量数据库备份;份;l如果有多个日志如果有多个日志备份,份,则按先后按先后顺序序进行恢复。行恢复。注意:注意:74根据事根据事务日志日志进行恢复行恢复RESTORELOGdatabase_nameFROMDISK|TAPE=physical_backup_device_nameWITH,NORECOVERY|RECOVERY,STOPAT=date_time|,STOPATMARK=mark_nameAFTERdatetime|,STOPBEFOREMARK=mark_nameAFTERdatetime75根据文件或文件根据文件或文件组进行恢复行恢复RESTOREDATEBASEdatabase_nameFILE=logic_file_list|FILEGROUP=filegroup_listFROMDISK|TAPE=physical_backup_device_name76