《事务管理》PPT课件.ppt

上传人:牧羊曲112 文档编号:5457770 上传时间:2023-07-09 格式:PPT 页数:86 大小:307.49KB
返回 下载 相关 举报
《事务管理》PPT课件.ppt_第1页
第1页 / 共86页
《事务管理》PPT课件.ppt_第2页
第2页 / 共86页
《事务管理》PPT课件.ppt_第3页
第3页 / 共86页
《事务管理》PPT课件.ppt_第4页
第4页 / 共86页
《事务管理》PPT课件.ppt_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《《事务管理》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《事务管理》PPT课件.ppt(86页珍藏版)》请在三一办公上搜索。

1、第8章 事务管理,事 务 并发控制 恢 复,事 务,事务的概念 事务的性质 可串行性和隔离级别 SQL对事务的支持,事务的概念,事务是构成单一逻辑工作单元的操作集合。为什么需要事务的概念呢?恢复的需要并发操作的需要,事务的性质,原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability),事务的这些性质通常称为ACID特性,原子性,事务的原子性强调了一个事务是一个逻辑工作单元,是一个整体,是不可分割的。一个事务所包含的操作要么全部做,要么全部不做。,一致性,一个事务执行一项数据库操作,事务将使数据库从一种一致性的状态变换成另一种一致性状

2、态。在事务执行前,总是假设数据库是一致的,那么当事务成功执行后,数据库肯定仍然是一致的。,隔离性,如果每个事务单独执行能保持原子性和一致性,这些事务并发执行也能保持原子性和一致性,则是事务的隔离性。,持久性,事务的持久性是指一旦事务成功完成,该事务对数据库所施加的所有更新都是永久的。,可串行性,可串行性通常看作是多个事务并发执行的正确性准则。具体判定方法如下:各单个事务如能将数据库从一个正确状态转变为另一个正确状态,则认为该事务是正确的;按任何一个串行顺序依次执行多个事务也是正确的(这里的串行顺序假定各个事务间彼此独立、不交叉);事务的交叉执行过程是正确的,当且仅当其与串行执行过程等价,则事务

3、是可串行化的。,隔离级别,隔离性虽然是事务的基本性质之一,但是彻底的隔离意味着并发操作效率的降低。所以人们设想在避免干扰的前提下,适当地降低隔离的级别,从而提高并发的操作效率。隔离级别越低,并发操作的效率越高,但是产生干扰的可能性也越大;隔离级别越高,则并发操作的效率越低,同时产生干扰的可能性也越小。在设计应用时,可以在所能容忍的干扰程度范围内,尽可能的降低隔离级别,从而提高应用的执行效率。,隔离级别,在SQL标准中定义了下列四种隔离级别,SQL Server支持所有这些隔离级别:未提交读(READ UNCOMMITTED):事务隔离的最低级别,仅可保证不读取物理损坏的数据,这是四个隔离级别中

4、限制最小的级别。提交读(READ COMMITTED):SQL Server默认级别,可以保证不读取“脏”数据。可重复读(REPEATABLE READ):可以保证读一致性,避免不一致分析问题。可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离;如果事务在可串行化隔离级别上运行,则可以保证任何并发重叠事务均是串行的。,隔离级别,四种隔离级别所允许的不同类型的行为,事务必须运行于可重复读或更高的隔离级别才可以防止丢失更新。,隔离级别,设置隔离级别的命令是:SET TRANSACTION ISOLATION LEVEL READ COMMITTED|READ UNCOMMI

5、TTED|REPEATABLE READ|SERIALIZABLE,SQL对事务的支持,开始事务 结束事务 事务保存点 隐含事务与自动提交,开始事务,使用BEGIN TRANSACTION命令显式说明一个事务开始,它说明了对数据库进行操作的一个单元的起始点。在事务完成之前出现任何操作错误和故障,都可以撤销事务,使事务回退到这个起始点。,结束事务,成功结束事务的命令是COMMIT TRANSACTION,它的作用是提交或确认事务已经完成,所以该命令也称作事务提交。撤消事务的命令是ROLLBACK TRANSACTION,即撤消在该事务中对数据库所做的更新操作,使数据库回退到事务的起始点。,事务保

6、存点,SQL标准还支持“事务保存点”技术,所谓事务保存点就是在事务的过程中插入若干标记,这样当发现事务中有操作错误时,可以不撤消整个事务,只撤消部分事务,即将事务回退到某个事务保存点。,事务保存点,SQL Server支持事务保存点技术,设置保存点的命令是SAVE TRANSACTION(在SQL标准中是SAVEPOINT命令),具体格式是:SAVE TRANSACTION savepoint_name撤消部分事务或回退到事务保存点的命令也是ROLLBACK TRANSACTION,具体格式是:ROLLBACK TRANSACTION savepoint_name,事务保存点,在SQL标准中还

7、支持取消事务保存点的命令RELEASE SAVEPOINT,在SQL Server目前的版本中不支持取消事务保存点。,隐含事务与自动提交,SQL标准规定事务的开始是隐含的,在发出COMMIT(提交事务)或ROLLBACK(撤消事务)命令之前,该事务将一直保持有效。一个事务被提交或撤消之后,又将自动启动下一个新事务。,隐含事务与自动提交,SQL Server也可以设置成隐含事务方式,设置隐含事务方式的命令是:SET IMPLICIT_TRANSACTIONS ON取消隐含事务方式的命令是:SET IMPLICIT_TRANSACTIONS OFF,隐含事务与自动提交,当是隐含事务方式时,不需要用

8、BEGIN TRANSACTION命令显式的启动或开始一个事务,但需要用COMMIT或ROLLBACK命令结束事务;当是非隐含事务方式时,如果没有用BEGIN TRANSACTION命令显式的启动或开始一个事务,则每条操作数据库的语句都将作为独立的事务被自动提交或撤消,这时候不需要、也不能执行COMMIT或ROLLBACK命令。,并发控制,干扰问题 解决干扰封锁 封锁不当死锁 封锁与隔离级别,干扰问题,丢失更新问题 未提交依赖问题 不一致分析问题 幻象读问题,丢失更新问题,例:旅客A来到A售票处,要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员A(下称用户A)在终端A查看剩余票信

9、息;几乎在同时,旅客B来到B售票处,也要买一张15日北京到上海的13次直达快速列车的软卧车票,售票员B(下称用户B)从终端B查到了同样的剩余票信息;旅客A买了一张15日13次7车厢5号下铺的软卧票,用户A更新剩余票信息并将它存入数据库;这时用户B不知道用户A已经将15日13次7车厢5号下铺的软卧票卖出,使旅客B也买了一张15日13次7车厢5号下铺的软卧票,用户B更新剩余票信息并将它存入数据库(重复了用户A已经做过的更新)。,总的效果:15日13次7车厢5号下铺的软卧票卖了两次。其原因是:允许了用户B在过时的信息基础上去更新数据库,而没有迫使他去看最新的信息。,丢失更新问题,用SQL术语描述丢失

10、更新问题,未提交依赖问题,未提交依赖问题也称为读“脏”(Dirty Read)数据问题,查询一个已经被其他事务更新、但尚未提交的元组,将会引起未提交依赖问题。,不一致分析问题,不一致分析问题也称为不可重复读问题,很多应用可能需要校验功能,这时往往需要连续两次或多次读数据进行校验和分析,结果由于其他事务的干扰,使得前后结果不一致,从而产生校验错误(即不一致的分析)。,幻象读问题,幻象读问题与不一致分析问题有关,当事务A读数据时,事务B在对同一个关系进行插入或删除操作,这时事务A再读同一条件的元组时,会发现神秘地多出了一些元组或丢失了一些元组,把这种现象称作幻象读。,封锁,封锁的基本技术 封锁机制

11、 SQL Server中与封锁有关的命令 封锁粒度 意向锁,封锁的基本技术,当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。针对不同的干扰问题可以有不同的封锁机制。以丢失更新问题为例,实施封锁的基本思想是:当一个用户对一个表或记录进行更新时,封锁该表或记录,使其他用户不能在同一时刻更新相同的表或记录,迫使其他用户在更新后的基础上(而不是在更新前的基础上)再实施另外的更新操作。,封锁的基本技术,实施封锁以后的时间序列,封锁机制,共享封锁 独占封锁 更新封锁,有些封锁在执行完相应操作后就自动释放封锁,有些封锁则保持到事务结束(提交或撤消)时才释放(无论如何,所有的封锁都会在事务

12、结束时自动释放)。,共享封锁,共享封锁是为读操作设置的一种封锁,所以也称作读封锁,或简称S锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。这种封锁可以保证最大的并发性,任何数量的用户都可以同时对同样的数据施加这种共享锁。已经实施共享锁的表拒绝来自其他事务的独占封锁和更新封锁。,独占封锁,独占封锁也叫排他封锁,它是为修改操作设置的一种封锁,也称为写封锁,或简称为X锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。,更新封锁,当需要对一个记录或一

13、组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来自其他用户的任何封锁,但不拒绝一般的查询操作。,SQL Server中与封锁有关的命令,SQL Server的封锁操作是在相关语句的“WITH()”子句中完成的,该短语可以在SELECT、INSERT、UPDATE和DELETE等语句中指定表级锁定的方式和范围。,SQL Server中与封锁有关的命令,常用的封锁关键词有:TABLOCK:对表施行共享封锁,在读完数据后立刻释放封锁,此类封锁可以避免读“脏”数据,但不具有可重复读的特性。HOLDLOCK:与T

14、ABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放锁,这样可以保证数据的可重复独特性。NOLOCK:不进行封锁,此关键词仅应用于SELECT语句,这样可能会读取未提交事务的数据,即有可能发生“脏”读。TABLOCKX:对表实施独占封锁。UPDLOCK:对表中的指定元组实施更新封锁;这时其他事务可以对同一表中的其他元组也实施更新封锁,但是不允许对表实施共享封锁和独占封锁。,SQL Server中与封锁有关的命令,DECLARE d datetime,t char(6),s char(2),n char(10)BEGIN TRANSACTIONSELECT n=座位号 FR

15、OM R WITH(UPDLOCK)WHERE 日期=d AND 车次=t AND 座别=s AND 状态 IS NULLIF UPDATE R SET 状态=Y WHERE 座位号=n AND 日期=d AND 车次=t AND 座别=sCOMMIT TRANSACTIONELSEROLLBACK TRANSACTION,封锁粒度,封锁的对象可以是表、也可以是元组等,我们把封锁对象的大小称为封锁粒度(Granularity)。封锁的对象可以是逻辑单元(如表和元组等),也可以是物理单元(如数据页和数据块等)。数据库管理系统一般都具有多粒度锁定功能,允许一个事务锁定不同类型的资源。,封锁粒度,锁

16、定在较小的粒度(例如行)可以增加并发操作的性能,但系统开销也较大。这是因为如果封锁的粒度小,则意味着需要的锁多,从而需要系统控制更多的锁。锁定在较大的粒度(例如表)会降低操作的并发性,这是因为锁定整个表限制了其他事务对表中任意部分进行访问。封锁粒度大,则不需要太多的封锁,由于需要维护的锁较少,所以系统开销较低。,意向锁,为了降低封锁的成本,提高并发的性能,数据库管理系统还支持一种意向锁(Intention Lock)。意向锁表示一种封锁意向,当需要在某些底层资源上(如元组)获取封锁时,可以先对高层资源(如表)实施意向锁。例如,在表级实施共享意向锁表示事务打算在表中的元组上实施共享锁,这样做可以

17、防止另一个事务随后在同样的资源上获取排它锁。意向锁可以提高性能,因为系统仅在表级检查意向锁来确定事务是否可以安全地获取该表上的锁;而无须检查表中的每个元组上的锁,以确定事务是否可以锁定整个表。,意向锁,意向共享(IS)意向排它(IX)共享意向排它(SIX),意向共享(IS),通过在各资源上放置IS锁,表明事务的意向是读取层次结构中的部分(而不是全部)底层资源。例如,对表实施IS锁,则意味着要对表中的某个(些)元组实施S锁;或者说,当需要对表中的某个(些)元组实施S锁时,应该首先对表实施IS锁。,意向排它(IX),通过在各资源上放置IX锁,表明事务的意向是修改层次结构中的部分(而不是全部)底层资

18、源。例如,对表实施IX锁,则意味着要对表中的某个(些)元组实施X锁;或者说,当需要对表中的某个(些)元组实施X锁时,应该首先对表实施IX锁。,共享意向排它(SIX),通过在各资源上放置SIX锁,表明事务的意向是读取层次结构中的全部底层资源并修改部分(而不是全部)底层资源。SIX锁等同于加S锁、再加IX锁。例如,对表实施SIX锁,则意味着要对表实施S锁,并对表中的某个(些)元组实施X锁;或者说,当需要对表实施S锁,并对表中的某个(些)元组实施X锁时,应该首先对表实施SIX锁。,死锁,产生死锁的原因 避免死锁 发现死锁解决死锁,产生死锁的原因,右图示意了两个并发事务所发生事件的序列,假设程序A为了

19、完成某个事务需要封锁仓库和职工两个关系,而几乎在同一时刻并发执行的程序B为完成另一个事务也需要封锁职工和仓库关系,这两个程序正好按照如图所示的交错序列执行命令,结果两个程序都为了等待对方释放数据资源而产生死锁。,避免死锁,相同顺序法 所有的用户程序约定都按相同的顺序来封锁表 一次封锁法 为了完成一个事务,一次性封锁所需要的全部表 两阶段封锁协议 所有事务都必须将对数据的封锁分为封锁和释放两个阶段,避免死锁的封锁,两阶段封锁协议,第一阶段称为扩展阶段,这一阶段获得各种类型的封锁,但是不能释放任何封锁。第二阶段称为收缩阶段,这一阶段释放各种类型的封锁,一旦开始释放封锁,则不能再申请任何类型的封锁。

20、注意,两阶段封锁协议和一次封锁法的异同之处。一次封锁法遵守两阶段封锁协议;但是两阶段封锁协议并不要求一次封锁所有需要封锁的数据。两阶段封锁协议仍有可能发生死锁。,发现死锁,超时法 即一个事务在等待的时间超过了规定的时限后就认为发生了死锁。这种方法非常不可靠,如果设置的等待时限长,则不能及时发现死锁;如果设置的等待时限短,则可能会将没有发生死锁的事务误判为死锁。,发现死锁,等待图法 即通过有向图判定事务是否是可串行化的,如果是则说明没有发生死锁,否则说明发生了死锁。具体思路是:用节点来表示正在运行的事务,用有向边来表示事务之间的等待关系,如右图所示,如果有向图中发现回路,则说明发生了死锁。,解决

21、死锁,发现死锁后解决死锁的一般策略是:自动使“年轻”的事务(即完成工作量少的事务)先退回去,然后让“年老”的事务(即完成工作量多的事务)先执行,等“年老”的事务完成并释放封锁后,“年轻”的事务再重新执行。,封锁与隔离级别,可以通过指定隔离级别或对数据资源实施封锁达到事务隔离的目的;封锁是实现并发操作的传统方法(在SQL标准中没有提及封锁),适当的运用封锁并保证高并发操作性能是一件非常复杂的工作,这需要用户深入了解各种封锁的相容性,并设计封锁的调度策略;SQL标准中规定了事务的隔离级别,即未提交读、提交读、可重复读和可串行化,隔离级别解决了并发事务可能产生的丢失更新问题、未提交依赖问题、不一致分

22、析问题和幻象读问题,其中为了避免丢失更新问题,事务必须运行在可重复读或可串行化隔离级别。用户可以根据事务的需要设定隔离级别,结果由数据库管理系统控制封锁和进行并发操作调度。,封锁与隔离级别,在实际应用中,也可以将隔离级别和封锁结合起来使用。例如,如果指定隔离级别是可重复读,则SQL会话中所有SELECT语句的锁定行为都运行于该隔离级别上,并一直保持有效,直到会话终止或者将隔离级别设置为另一个级别。如果必要,可以通过指定表级封锁来替代单个SELECT语句的隔离级别,指定表级封锁不会影响会话中的其他语句。一般仅在绝对必要时才使用表级封锁更改默认的锁定行为。,恢 复,故障类型 备份类型 日志的概念

23、恢复模型 备份或转储 恢复或还原,故障类型,造成事务中断的故障 突然掉电引起的事务中断 硬件故障引起的事务中断 客户应用程序出错引起的事务中断 系统程序故障引起的事务中断 磁盘介质故障,备份类型,双机热备份 双工备份 磁盘镜像 数据库备份技术,日志的概念,日志则是对备份的补充,它可以看作是一个值班日记,它将记录下所有对数据库的更新操作。这样就可以在备份完成时立刻刷新并启用一个数据库日志,数据库日志是实时的,它将忠实地记录下所有对数据库的更新操作。当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(恢复大部分数据),然后再运行数据库日志,即将备份后所做的更新操作再重新做一遍,从而将数据

24、库完全恢复。为了保证日志的安全,应该将日志和主数据库安排在不同的存储设备上,否则日志和数据库可能会同时遭到破坏,日志也就失去了它本来的作用。,恢复模型,简单恢复模型允许将数据库恢复到最新的备份,即使用简单恢复模型可以将数据库恢复到上次备份的即时点,而无法将数据库恢复到故障点或特定的即时点。使用简单恢复模型,日志实际失去了作用。使用简单恢复模型的数据库只能做数据库备份,不能做日志备份。完全恢复模型允许将数据库恢复到故障点状态,即完全恢复模型使用数据库备份和事务日志备份提供对介质故障的完全防范。,恢复模型,可以使用ALTER DATABASE语句的RECOVERY子句设置恢复模型。例如,如下语句将

25、订货数据库的恢复模型设置为完全恢复:ALTER DATABASE 订货 SET RECOVERY FULL,备份或转储,备份的类型 动态备份和静态备份 制定备份的策略 备份整个数据库 增量备份 事务日志备份 文件和文件组备份 系统数据库的备份,备份的类型,全备份:即完整的备份整个数据库;增量备份:增量数据库备份只备份自上次数据库备份后发生更改的数据;文件和文件组备份:备份数据库文件或文件组,而不是备份数据库;事务日志备份:只备份事务日志。,动态备份和静态备份,动态备份也称作在线备份,即在做备份时不中断数据库的运行,不中断数据库上的应用程序和事务处理。静态备份也称作离线或脱机备份,这意味着在做备

26、份时没有任何数据库事务在运行,这种备份方式应是首选的备份方式。,制定备份的策略,备份不是实时的,备份应该什么时候做?用什么方式做?这根据数据库的不同规模、不同用途,可能有很多因素需要考虑和衡量。,备份整个数据库,在SQL Server中系统管理员和数据库管理员可以进行备份,也可以指定某个用户担当db_backupoperator角色(数据库预定义角色)来负责数据库的备份工作。所有的备份工作可以在“企业管理器”中利用交互工具完成,也可以使用命令方式完成。,备份整个数据库,备份数据库的命令是BACKUP DATABASE,一般格式如下:BACKUP DATABASE database_name T

27、O DISK|TAPE=physical_backup_device_name例如,如下命令将订货数据库备份到C:dumpdump1.bak:BACKUP DATABASE 订货 TO DISK=C:dumpdumpfull.bak,增量备份,增量备份的命令也是BACKUP DATABASE,一般格式如下:BACKUP DATABASE database_name TO DISK|TAPE=physical_backup_device_name WITH DIFFERENTIAL例如,如下命令将对订货数据库做增量备份(备份到C:dumpdump1.bak):BACKUP DATABASE 订货

28、 TO DISK=C:dumpdump1.bak WITH DIFFERENTIAL,事务日志备份,备份事务日志的命令是BACKUP LOG,一般格式是:BACKUP LOG database_name TO DISK|TAPE=physical_backup_device_name 例如,如下命令将备份订货数据库的日志(备份到C:dumpdumplog.bak):BACKUP LOG 订货 TO DISK=C:dumpdumplog.bak,截断日志,截断日志的命令是:BACKUP LOG database_name WITHTRUNCATE_ONLY例如,在备份了订货数据库或事务日志后,为

29、了截断订货管理数据库的事务日志可以使用如下命令:BACKUP LOG 订货 WITH TRUNCATE_ONLY,文件和文件组备份,可以备份和恢复数据库中的个别文件,这样当遇到介质故障时可以只恢复已损坏的文件,而不用恢复数据库的其余部分,从而加快了恢复速度。对于超大型数据库,有时不可能完成完整数据库的备份,这样则可以使用文件备份。文件备份为数据库备份提供了一种灵活的手段。与数据库备份相比,文件备份的主要缺点是增加了管理的复杂性。必须注意维护完整的文件备份集和所覆盖的日志备份。,文件和文件组备份,备份文件或文件组的一般命令格式是:BACKUP DATABASE database_nameFILE

30、=logic_file_list|FILEGROUP=filegroup_list TO DISK|TAPE=physical_backup_device_name WITH DIFFERENTIAL,文件和文件组备份,例如,如下命令完成对订货数据库warehouse文件的备份:BACKUP DATABASE 订货 FILE=warehouse TO DISK=C:dumpfile_1.bak如下命令则完成对订货数据库文件组仓库的备份:BACKUP DATABASE 订货 FILEGROUP=仓库 TO DISK=C:dumpfile_g.bak,系统数据库的备份,数据库备份不仅仅是要备份用户

31、数据库,系统数据库也需要备份,例如SQL Server中的master、model和msdb等系统数据库。特别是master数据库,它负责整个数据库的管理,所有用户创建的数据库以及用户登录信息都存储在该数据库中。所以,该数据库一旦损坏,整个系统的使用都将受到影响。,恢复或还原,恢复整个数据库 恢复数据库的部分内容 恢复特定的文件或文件组 恢复事务,可以将数据库恢复到做备份的即时点、发生故障的即时点或特定的事务即时点。,恢复或还原,根据数据库全备份进行恢复 根据增量备份进行恢复 根据事务日志进行恢复 根据文件或文件组备份进行恢复 恢复系统数据库,根据数据库全备份进行恢复,RESTORE DATA

32、BASE database_nameFROM DISK|TAPE=physical_backup_device_name WITH,NORECOVERY|RECOVERY,REPLACE,根据增量备份进行恢复,在简单恢复模型和完全恢复模型中都可以选择增量备份,如果存在增量备份,则一般需要进行相应的恢复操作。增量恢复数据库的命令也是RESTORE DATABASE,但是在根据增量备份继续恢复之前应该:已经使用RESTORE DATABASE命令完成了全备份的恢复,同时指定了NORECOVERY子句。,根据事务日志进行恢复,利用日志可以将数据库恢复到最新的一致状态或任意的事务点。首先恢复事务日志备

33、份之前的数据库备份或增量数据库备份。如果有多个日志备份,则按先后顺序进行恢复。,根据事务日志进行恢复,RESTORE LOG database_nameFROM DISK|TAPE=physical_backup_device_name WITH,NORECOVERY|RECOVERY,STOPAT=date_time|,STOPATMARK=mark_name AFTER datetime|,STOPBEFOREMARK=mark_name AFTER datetime,根据文件或文件组备份进行恢复,如果数据库的某个文件损坏了,并且按文件或文件组做了备份,则可以考虑根据文件或文件组备份进行恢

34、复。当使用文件或文件组备份进行恢复时,最后一个文件或文件组恢复操作完成后,必须将事务日志应用于数据库文件,以便使之与数据库的其余部分保持一致。如果被恢复的文件自上次备份后没有做过任何修改操作,则不必应用事务日志,RESTORE语句会报告这一情况。,根据文件或文件组备份进行恢复,RESTORE DATABASE database_name FILE=logical_file_name|FILEGROUP=logical_filegroup_name FROM DISK|TAPE=physical_backup_device_name,恢复系统数据库,备份系统数据库与备份用户数据库的方式相同,除m

35、aster数据库之外其他系统数据库的恢复也与恢复用户数据库类似。master数据库是所有数据库的主数据库,也是管理所有数据库的数据库。恢复其他数据库都是在SQL Server能够正常运行的基础上进行的,而master数据库的损坏可能导致SQL server根本不能运行,所以恢复master数据库是一件特殊的任务。,恢复master数据库,如果master数据库只是轻微损坏或信息丢失,master数据库的内容至少部分可用,从而能够启动SQL Server实例,则可以直接根据master数据库的完整备份恢复master数据库。如果由于master数据库严重损坏而无法启动SQL Server实例,则不能立即恢复master数据库。因为SQL Server实例需要处于运行状态才能恢复任何数据库。为此,需要首先使用重建master数据库实用工具Rebuildm.exe(该程序位于Program FilesMicrosoft SQL Server80ToolsBinn目录中)重建master数据库,然后才可以用普通方法利用备份恢复master数据库。,【本章小节】,事务的概念事务的性质并发控制恢复,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号