《数据库保护》PPT课件.pptx

上传人:wuy****n92 文档编号:71667879 上传时间:2023-02-04 格式:PPTX 页数:97 大小:2.30MB
返回 下载 相关 举报
《数据库保护》PPT课件.pptx_第1页
第1页 / 共97页
《数据库保护》PPT课件.pptx_第2页
第2页 / 共97页
点击查看更多>>
资源描述

《《数据库保护》PPT课件.pptx》由会员分享,可在线阅读,更多相关《《数据库保护》PPT课件.pptx(97页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、本章要求本章要求理解:事务处理与并发控制、数据库恢复及其实现 掌握:数据库系统安全性、数据完整性、SQL Server 2005数据库的备份与还原 重点内容:数据库系统安全性、数据完整性教学难点:数据完整性 所谓数据库的安全性是指保护数据库以防止非法使用数据库所造成的数据泄密、更改或破坏。数据库系统的安全性是评价数据库系统性能的主要指标之一。1.安全性基本概念数据库系统的安全性建立在计算机系统安全性的基础上。数据库系统安全性可以由多种方式实现借助于计算机系统的安全性来保护数据库安全通过用户程序来识别或验证进入数据库系统的用户的合法性通过外部程序以控制对数据的合法操作安全性基本概念任何的数据库管

2、理系统,对于想要进入数据库系统的用户将会通过登录管理进行身份验证,只有合法用户才会被允许进入.对于已进入系统的用户,数据库管理系统还要通过用户管理、角色管理、权限管理进行存取控制,以允许合法用户只执行授权的操作。数据库安全管理涉及以下安全技术:用户标识和鉴定、存取控制、视图和密码存储。2.数据库安全管理机制用户标识用户标识是数据库安全性管理中最外层的安全保护,它由系统提供一定的方式让用户标识自己的身份。常用方法有:用户名:系统提供一定方法以让用户来标识自己的名字或身份口令:系统进行核实以鉴别用户身份,只有通过鉴别后的用户才允许进入数据库系统。一般可对数据库的用户分为四类:系统用户(DBA),数

3、据对象的属主(Owner),一般用户,公共用户(Public)。数据库安全管理机制权限管理用户使用数据库的方式称为权限。通过数据库系统验证的合法用户,再通过权限设置与管理,可以获得访问数据的特权。特权包括:读数据权限,插入数据权限,修改数据权限,删除数据权限等。数据库安全管理机制数据库角色在一些商用数据库管理系统中,将经过命名的一组与数据库操作相关的权限集合称之为数据库角色,使用角色来管理数据库权限可以简化授权过程。在SQL Server 2005中,首先创建角色,然后再给角色授权。数据库安全管理机制存取控制当用户发出存取数据库的操作请求后,数据库管理系统会根据安全规则进行合法权限检查,若用户

4、的请求超出了所定义的权限,系统将拒绝执行该项操作。用户的权限定义和合法性检查机制构成了数据库管理系统的安全子系统。3.视图、审计与数据加密视图用于保障数据库安全性审计数据加密4.SQL Server 2005新增机制登录用户用户和架构的分离目录安全性模块化执行上下文粒度化的权限控制口令策略的增强5.SQL Server 2005的登录和用户登录是SQL Server实例层的安全模型,若要连接到某个数据库实例,必须要有能够连接到该数据库实例的登录账号。用户是数据库层的对象,当通过登录连接到某个数据库实例时,须为数据库指明合适的用户,用于操作数据库对象。一个合法的登录账号仅能表明该账号通过了WIN

5、DOWS或SQL Server的认证,并不表示该账号可以对数据库对象可以进行某种或某些操作。一个登录账号总是和一个或多个数据库用户相对应。创建登录CREATE LOGIN login_nameWITH|FROM:=WINDOWSWITH,|CERTIFICATE cert_name|ASYMMETRIC KEY asym_key_name:=PASSWORD=passwordHASHEDMUST_CHANGE,创建登录:=SID=sid|DEFAULT DATABASE=database|DEFAULT LANGUAGE=language|CHECK_EXPIRATION=ON|OFF|CHE

6、CK_POLICY=ON|OFFCREDENTIAL=credential_name:=DEFAULT_DATABASE=database|DEFAULT_LANGUAGE=language创建登录示例创建登录test01,其口令为“123”。CREATE LOGIN test01 WITH PASSWORD=123创建用户CREATE USER User_nameFOR|FROMLOGIN login_name|CERTIFICATE cert_name|ASYMMETRIC KEY asym_key_name|WITHOUT LOGINWITH DEFAULT_SCHEMA=schema_

7、name创建用户示例为数据库TEACHING_MIS创建用户test01,所使用的SQL语句为:USE TEACHING_MISGOCREATE USER test01CREATE USER user01_stu FOR LOGIN test01用户与架构的分离(自学)在ANSI SQL99就已经制定了架构(Schema)的规范,用以区分各数据库内的对象,如数据表、视图表、存储过程、自定义函数等等,所以这些数据对象的两节名称(two-part name)形式为SchemaName.ObjectName SQL Server 2005中用户和架构已经分离,也就是说,可能创建新的架构以管理这些不同

8、的程序以及专用的某些数据表。用户与架构的分离所谓SQL Server 2005中提供架构的定义与用户分开,是指当在数据库级别创建用户时,可以指定该账号默认的架构(Default Schema),如果没有指定,则账号的默认架构为主dbo,这样的设计是为了向前兼容。由于对象归属在架构之下,通过赋予账号是否有权限访问架构将可以避免上述的问题。用户与架构的分离用户账号和架构分离具有以下的作用通过设置架构的拥有者是角色(Role)或Windows的组(Group),可以让多个账号同时有权访问该架构。让用户自建对象时,有较大的弹性。而赋予权限时可以在架构级别,也可以在对象自身。当删除用户账号时,不必更改该

9、账号所建对象的名称与拥有者。前端应用程序也不必改写与重新测试。创建架构的语法CREATE SCHEMA schema_name_clause,schema_name_clause:=schema_name|AUTHORIZATION owner_name|schema_name AUTHORIZATION owner_nameschema_element:=table_definition|view_difinition|grant_statement|revoke_statement|deny_statement创建架构的语法示例在数据库TEACHING_MIS中创建由USER01拥有的包含

10、表TEST01的名为SCOURES的架构。为体验用户和架构分离所带来的优越性,首先创建2个登录LOGIN1、LOGIN2和2个属于TEACHING_MIS数据库的用户USER01与USER02,并让它们分别与上面所创建的登录相关联,其所使用的SQL语句为:创建架构的语法CREATE LOGIN LOGIN1 WITH PASSWORD=LOG123CREATE LOGIN LOGIN2 WITH PASSWORD=LOG456USE TEACHING_MISGOCREATE USER USER01 FOR LOGIN LOGIN1;USE TEACHING_MISGOCREATE USER U

11、SER02 FOR LOGIN LOGIN2;创建架构的语法然后为用户USER01指定其架构,同时创建属于该架构的数据表TEST01,所使用的SQL语句如下所示:USE TEACHING_MISGOCREATE SCHEMA SCOURSES AUTHORIZATION USER01CREATE TABLE TEST01(SCID CHAR(8),SCNAME NVARCHAR(30),SP CHAR(4)GO创建架构的语法注意此时是以sa登录创建的,因此该架构也属于sa登录用户,当使用以下SQL语句来改变登录用户为USER01,再查询所创建的表TEST01:SETUSER USER01SEL

12、ECT*FROM SCOURSES.TEST01由于USER01是SCOURSES架构的拥有者,所以其具有操作该架构的权限,因此,可以通过SELECT语句正确查询到TEST01表中的数据。创建架构的语法最后,使用以下SQL语句将登录用户改变为USER02,再来查询TEST01表:SETUSER USER02SELECT*FROM SCOURSES.TEST01执行上述代码,出现错误而不能完成指定查询,该输出窗口显示内容如下:-消息15157,级别16,状态1,第1 行由于以下原因之一,setuser 失败:数据库主体USER02 不存在,与数据库主体对应的服务器主体没有服务器访问权限,无法模拟

13、此类型的数据库主体或您没有权限。创建架构的语法在SQL Server 2005中,虽同为一个数据库的用户,但由于USER02没有SCOURES的所有权,则不能操作该架构下的表TEST01,只有当USER02赋予权限后,才可操作该表,在这里,权限不再和用户相关,用户和架构已经分离。当用户访问对象但并没有以两节名称明确指定架构时,SQL Server 2005会先找与用户默认架构相同的架构下的对象,若找不到该对象,再去dbo架构下查找是否有相同的对象。6.SQL Server 2005中的权限设定 在SSMS中进行用户授权使用SQL语句进行用户授权收回权限 否认权限 使用SQL语句进行用户授权在S

14、QL Server2005中,使用GRANT语句将安全对象的权限授予指定的安全主体。但GRANT语句的语法是比较复杂的,因为不同的安全对象有不同的权限。使用GRANT子句进行授权操作的语法形式如下:GRANT ALLPRIVILEGES|permissionpermission(columncolumn,),nON class:securablesecurable TO principalprincipal,nWITH GRANT OPTIONAS principal示例给用户user01_stu赋予在数据库TEACHING_MIS上查询COURSE表的权限,可使用下面的SQL语句:USE T

15、EACHING_MIS;GRANT SELECT ON COURSE TO user01_stuGO收回权限 在SQL Server 2005中,使用REVOKE语句可以从某个安全主体处收回权限,注意该语句与GRANT语句对应,即是执行REVOKE语句收回的必须是先前经过GRANT语句授予安全主体的权限。在前面示例中,所授予用户user01_stu对于安全对象COURSE的查询Cname字段的权限,可以使用以下的REVOKE语句予以收回:USE TEACHING_MIS;REVOKE SELECT ON COURSE(cname)FROM user01_stuGO否认权限用户可通过两种方式获取

16、权限,一种方式是直接使用GRANT语句授予权限,另一种方式则是通过作为角色成员以继承角色的权限。REVOKE语句可以删除用户通过第一种方式所获得的权限,而如果需要彻底删除安全主体的特定权限,必须使用DENY语句来实现。示例否认前面授予用户user01_stu在对象COURSE表中查询CNane字段的权限。USE TEACHING_MIS;DENY SELECT ON COURSE(cname)TO user01_stuGO7.SQL Server 2005数据加密(自学)SQL Server 2005引入了成熟的数据安全技术,提供了对数据内容加解密、签名验证等功能。并实现了加密层次架构(Enc

17、ryption Hierarchy)。所谓加密的层次结构,意指对于众多要记住的且设置密码强度的规则又不同密码,将其都记录下来,但记录的时候用另一组密码加密,所以使用者只要记得加密其他密码的密码,要访问不同的密码时,先用终级密码解开后,再将解回的密码赋予到对应的系统上。这个密码管理所需要的层次架构。SQL Server 2005数据加密服务的服务的Master KeyMaster Key数据库的数据库的Master KeyMaster Key证书证书(Certificates(Certificates)非对称密钥非对称密钥非对称密钥非对称密钥对称密钥对称密钥对称密钥对称密钥数据数据数据数据数据数

18、据数据库中数据是从外界输入的,由于各种原因,数据库中的数据在输入过程中,会发生输入无效或输入错误的情况。因此,保证输入数据符合规定就成了数据库系统首要关注的问题,数据完整性因此而提出。数据完整性就是指数据的正确性和相容性。为保证数据库系统,特别是多用户的关系数据库系统中输入数据符合要求,以及存储的数据的正确性而提出的一整套规定。1.数据完整性类型 实体完整性(Entity Integrity)实体完整性规定表的每一行在表中是唯一的实体。实体完整性通过索引、UNIQUE约束、PRIMARY KEY约束和IDENTITY属性来强制表中的实体必须是唯一的。域完整性(Domain Integrity)

19、域完整性指数据库表中的列必须满足某种特定的数据类型或约束。表中的CHECK、FOREIGN KEY约束和DEFAULT、NOT NULL定义以及数据类型的限定属于域完整性的范畴。参照完整性(Referential Integrity)引用完整性,是指保持表之间已定义的关系。通过FOREIGN KEY约束、CHECK约束确保键值在所有表中一致,也即保证了表之间的数据的一致性。用户定义的完整性(User-defined Integrity)针对某个特定关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足特定的业务规则。2.完整性约束(Constraint)约束是在SQL Server 中实现

20、数据完整性的一种方法,它通过定义可输入表或表的单个列中的数据的限制条件而自动保持数据库完整性。SQL Server 中有5 种约束:主键约束、外键约束、惟一性约束、检查约束和缺省约束。主键约束主键约束是指定表的一列或几列的组合的值在表中具有惟一性,即主键能惟一地指定一行记录。每个表中最多只能有一个主键,且不允许主键列有NULL 属性。主键约束是最重要也是使用最广泛的约束类型。它在创建或修改表时,通过定义Primary Key约束来创建主键。创建主键约束的基本语法如下:CONSTRAINT constraint_namePRIMARY KEY CLUSTERED|NONCLUSTERED(col

21、umn_name1column_name1,column_name2,column_name16)示例-创建一个股票交易信息表,以股票账号为关键字:create table TRADE_INFO(stock_account char(10)not null,stock_number char(10)not null,order_number char(10)not null,order_price money default 1.00,trade_time datetime not null,constraint pk_s_account primary key(stock_number)on

22、 primary通过修改表添加约束alter table TRADE_INFOAdd constraint pk_s_account primary key(stock_number)外键约束 外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同时,就可以将这些列或列的组合定义为外关键字,并设定它与那个表中哪些列相关联。当在定义主关键字约束的表中更新列值时,在其它表中,即在与之相关联的外关键字约束的表中的外关键字列也将被相应地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果在与之相关联的含有主关键字的表的列中,没有与插入的外

23、关键字列值相同的值时,系统会拒绝插入数据。定义外关键字约束的基本语法如下:CONSTRAINT constraint_nameconstraint_nameFOREIGN KEY(column_name1column_name1,column_name2,column_name16)REFERENCES ref_tableref_table (ref_column1ref_column1,ref_column2,ref_column16)ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION NOT FOR REPLICATION 示例-

24、创建一个股票信息表,将与前面创建的股票交易表相关联:create table stock_info(stock_number char(10)not null,stock_name char(10)not null,client_name char(20),constraint pk_s_number primary key(stock_number)on primary修改上述交易信息表,增添外键约束,以建立与客户所委托交易的股票信息表之间的联系。ALTER TABLE TRADE_INFOADD CONSTRAINT fk_s_numberforeign key(stock_number)

25、references stock_info(stock_number);唯一性约束 唯一性约束指定一个或多个列的组合的值具有唯一性,以防止在列中输入重复的值。唯一性约束指定的列可以有NULL 属性。由于主键值是具有唯一性的,因此主键列上不能再设定惟一性约束。唯一性约束最多由16 个列组成。唯一性约束的语法如下:CONSTRAINT constraint_nameconstraint_nameUNIQUE CLUSTERED|NONCLUSTERED(column_name1column_name1,column_name2,column_name16)示例-定义一个员工信息表,其中员工的身份证

26、号具有唯一性。create table employees(emp_id char(8),emp_name char(10),emp_cardid char(18),constraint pk_emp_id primary key(emp_id),constraint uk_emp_cardid unique(emp_cardid)on primary检查约束 检查约束对输入列或整个表中的值设置检查条件,以限制输入值,保证数据库的数据完整性。可以对每个列设置符合检查。定义检查约束的语法如下:CONSTRAINT constraint_nameconstraint_nameCHECK NOT F

27、OR REPLICATION(logical_expression)(logical_expression)示例-创建一个订单表,其中股票订单量必须不小于100。CREATE TABLE orders(order_id char(8),s_id char(4),s_name char(10),quantity int,CONSTRAINT pk_order_id primary key(order_id),CONSTRAINT chk_quantity check(quantity=100),)ON primary缺省约束 缺省约束通过定义列的缺省值或使用数据库的缺省值对象绑定表的列,来指定列

28、的缺省值。SQL Server 推荐使用缺省约束,而不使用定义缺省值的方式来指定列的缺省值。定义缺省约束的语法如下:CONSTRAINT constraint_nameconstraint_nameDEFAULT constant_expressionconstant_expression FOR column_name列约束和表约束 对于数据库来说,约束又分为列级约束(Column Constraint)和表级约束(Table Constraint)。列级约束作为列定义的一部分只作用于此列本身。表级约束作为表定义的一部分,可以作用于多个列。示例为股票信息表创建列约束和表约束:CREATE T

29、ABLE stocks(s_id char(4),s_name char(10),price money default 1.00,quantity int check(quantity=100),/*列约束*/CONSTRAINT pk_p_id primary key(s_id,s_name)/*表约束*/)3.完整性控制 完整性控制是指完整性约束条件的定义机制、完整性检查机制以及违约处理等三个部分。完整性约束条件是数据模型的一个重要组成部分,它约束了数据库中数据的定义。任何一个商用数据库管理系统都应提供定义数据库约束条件的方法,通过这样的方法或工具让用户把完整性约束条件作为模式的一部分加

30、入到数据库中。完整性检查机制用于用户的操作请求,检查其是否违反了完整性约束条件。违约处理则用于保证在发现用户的操作违反了完整性约束条件后,应采取一定的措施以保证数据的完整性不受破坏。约束的执行 在关系数据库中,最重要的完整性约束是实体完整性和参照完整性。对于违反实体完整性和用户定义完整性的操作,一般都采用拒绝执行的方式进行处理。这类在一条语句执行后立即进行完整性检查的约束称这立即执行约束(Immediate Constraints)。而对于参照完整性的问题,并不一定都是简单地拒绝执行,而是要根据应用语义执行一些附加的操作,以保证数据的完整性。这种情况下,完整性检查要延迟到整个事务执行结束后方可

31、进行,检查正确方可提交。这种约束称为延迟执行约束(Deferred Constraints)。参照完整性的实现问题 参照完整性是建立在外关键字和主关键字之间或外关键字和惟一性关键字之间的关系上的 参照完整性作用的实现体现在如下几个方面:禁止在从表中插入包含主表中不存在的关键字的数据行禁止删除在从表中的有对应记录的主表记录 完整性约束的实现通过对数据完整性的语义约束和检查来保护数据库的完整性,其实现方式有:通过定义和使用完整性约束规则;通过触发器(Trigger)和存储过程(Stored Procedure)等过程来实现。事务处理的基本概念并发控制 1.事务处理的基本概念事务(Transacti

32、on)是数据库环境中的一个逻辑工作单元。从用户的观点来看:事务由一系列的操作组成,这些操作要么全部成功完成;要么全都不执行,即不对数据库留下任何影响。事务的性质(ACID)事务的状态 事务的定义事务的性质 事务具有以下4种基本特性,这些性质又称为事务的ACID特性。原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持续性(Durability)保证事务的ACID特性是事务处理的重要任务,为此,数据库在启动一个事务之后,需要控制多个资源直到事务结束后才释放。事务的状态 BEGINTRANSACTIONENDTRANSACTIONABORTCOMMITROLL

33、BACK事务的状态活动状态:事务的初始状态,事务在执行时处于该状态。局部提交状态:当操作序列中最后一条语句执行后,事务所处的状态。此时,事务虽已经完成执行,但实际输出可能还驻留在内存中,而在事务成功完成前仍有可能出现故障,事务仍可能会被中止。因此,该状态并不表示事务成功执行。失败状态:由于硬件或逻辑错误,使得事务不能正常执行,则事务进入失败状态,处理失败状态的事务必须回滚,于是事务就进入了中止状态。中止状态:事务经过回滚(ROLLBACK)后使数据库恢复到事务开始执行前(或用户指定的某一中间间段)的状态。提交状态:事务成功完成后,事务处于提交状态(COMMIT)。事务的定义在T-SQL中,定义

34、事务的语句有BEGIN TRANSACTION、COMMIT、ROLLBACK等。事务以BEGIN TRANSACTION语句开始,以COMMIT或ROLLBACK语句结束。所谓提交是指提交事务所有操作,将事务中所有对于数据的更新写回到物理数据库中,事务正常结束。回滚则表示在事务处理中发生了某种故障,事务不能继续执行,系统将事务中对数据库已进行的各类操作全部撤消,即中止了事务处理而回退到事务开始时的状态。事务的定义编制事务时,应注意遵循以下原则:在事务处理期间不要求用户输入游览数据时,尽量不打开事务在所有预备的数据分析之前,不启动事务必须进行修改时启动事务,执行完成修改操作语句后立即提交或回滚

35、。按照上述原则编制的事务比较简短,可以有效减小在多用户环境中事务处理过程中对于资源的争夺。2.并发控制在多用户环境下,数据库是一个共享资源,允许多个用户程序并行地存取数据库。当多个用户同时对同一数据对象进行读写操作,这种现象称为并发操作。并发操作可以充分利用系统资源,提高效率,但若对这种并发操作不加以控制,它也可能会破坏数据的一致性。并发控制执行顺序123456事务T1读AA:=A+100写A事务T2读AA:=A-300写AT1工作区中A的值300400400400400400T2工作区中A的值30030000数据库中A的值3003003004004000造成数据丢失更新并发控制的概念 为防止

36、数据库数据的不一致性,必须对并发操作进行控制,此称并发控制,其实际上是在网络环境下对数据库的并发操作进行规范的机制。该机制的作用是协调同一时间访问同一数据库文件的多个事务之间的关系,以防止发生冲突。对并发操作,如果不加控制,就可能会存取到不正确的数据,从而破坏了数据库的一致性。执行顺序1234567事务T1读AA:=A+100写AROLLBACK事务T2读AA:=A-300写AT1工作区中A的值300400400400300T2工作区中A的值400400100100数据库中A的值3003004004003000100造成读脏数据执行顺序12345事务T1读A读A事务T2读AA:=A-300写A

37、T1工作区中A的值300300300300100T2工作区中A的值100100100100数据库中A的值300300300100100造成不可重复读并发操作会引发一系列的错误,破坏了数据库的一致性,这主要是因事务并发执行时的相互干扰而造成,因此,数据库管理系统应采取相应的事务与封锁机制进行并发控制。并发控制需要采取封锁策略,即在事务要对数据库进行操作之前,首先对其操作的数据设置封锁,禁止其他事务再对该数据进行操作,当它对该数据操作完毕并解除对数据的封锁后,才允许其他事务对该数据进行操作。封锁技术 为了防止多个用户事务并发操作数据库对象,而破坏了数据的一致性,从而破坏了数据完整性,数据库管理系统

38、提供各种类型的封锁机制,可以为一个事务封锁资源,并在事务不需要时自动释放。封锁是事务的并发控制主要手段,其作用是在事务T对某数据对象(例如:表)操作前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有一定的控制,在事务T释放所加的锁之前,其它事务不能更新此数据对象。封锁类型 数据库管理系统提供多种类型的封锁,其基本类型有两种:共享性封锁S锁:当一个事务T仅仅希望读取A时,可用共享性封锁(Share Locks)。事务T在加S锁后不允许其他事务写A,但可以允许其他事务同时读A。排它性封锁(Exclusive Locks)X锁:当一个事务T要求修改A时,其他事务既不允许读A,更不允许修改A

39、。封锁的相容性 X S X S X XS S N N YN N Y N Y Y N Y Y Y Y Y Y Y YT2T1 封锁粒度 封锁对象的大小称为封锁的粒度(granularity)。对于SQL Server数据库管理系统,其封锁的对象对于逻辑单元而言:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库。对物理单元而言,封锁对象包括:页(数据页或索引页)、块。封锁的问题活锁:在多个事务请求对同一数据封锁时,系统可能使某个事务永远处于等待状态,而得不到封锁的机会。这种总是处于等待的状态称为活锁。解决活锁问题的方法是采用事务排队的方法,先来先服务,以使前面的事务先获得对数据的封锁权

40、。封锁的问题死锁:指系统中有两个以上的事务都处于交错等待状态,每一个都等待另一个解除封锁的现象。解决死锁问题有两类方法:一类方法是采用一定措施来预防死锁的发生,另一类方法是允许发生死锁,然后用一定手段来诊断并予以解除。封锁的问题预防死锁的两种方法一次封锁法 顺序封锁法 诊断并解除死锁的方法的两种方法超时法 等待图法 事务的调度 事务的执行次序称为“调度”。串行调度并发调度可串行化两段锁(Two-Phase Locking)协议数据库恢复的基本概念 故障类型及其恢复1.数据库恢复的基本概念数据可恢复性(Recovery)定义为:系统把数据库从被破坏、不正确的状态恢复到最近一个正确的状态的能力。数

41、据库管理系统中的恢复管理子系统是DBMS中的重要组成部分,其作用是采取一系列措施保证在任何情况下事务的原子性和持续性,以确保数据不丢失,不被破坏。使数据库具有可恢复性的基本原则就是冗余,即数据库的重复存储。因此,数据恢复具体实现方法是,在平时作好转储和建立日志这两项工作.数据库恢复的基本概念周期地对整个数据库进行拷贝,转储到另一个磁盘等另外的存储介质中;建立日志数据库,记录事务开始、结束标志,记录事务对数据库的每一次插入、删除和修改前后的值,写到日志库中,以便有据可查。一旦发生故障,对于具体的情况分开来处理:若数据库已被破坏,例如磁盘损坏等,此时数据库已不能用了,就要装入数据库备份到新的磁盘,

42、然后利用日志库执行“重做”(REDO)处理,将这两个数据库状态之间的所有更新重做一遍,这样即可恢复原有数据库,又没有丢失对数据库的更新操作。若数据库未受破坏,但某些数据不可靠,例如在程序运行时数据库异常中断,这时,只需通过日志库执行“撤消”(UNDO)处理,撤销不可靠的修改,将数据库恢复到正确的状态。2.故障类型及其恢复 事务故障 可预期的故障非预期的故障系统故障 介质故障在SQL Server 2005数据库管理系统中,其对数据库恢复的主要工作是执行备份和还原操作,以确保数据库中数据的安全和完整。对于数据库中数据的备份和还原是解决各类故障问题的有效机制。所谓备份就是制作数据库结构和数据的拷贝

43、,以便在数据库遭到破坏时能够修复数据库。还原是与备份相对应的操作,是为了应对已经遇到的系统失败而采取的操作,其实质是指加载数据库备份到系统中的进程。1.数据库恢复模式 完整恢复模式 简单恢复模式 2.备份操作 永久性备份文件的创建使用SQL Server 2005工具创建使用T-SQL语句创建 临时性备份文件的创建 使用SQL Server 2005工具创建 使用T-SQL语句创建 使用sp_addumpdevice系统存储过程创建永久性备份文件,其语法格式为:sp_addumpdevice device_type,logical_name,physical_name临时性备份文件的创建 在执

44、行数据库备份过程中产生的备份文件称为临时性的备份文件。若并不打算反复使用该备份文件,或者只使用一次,或者作为测试,则可以创建临时性的备份文件。临时性的备份文件的创建需要使用BACKUP语句。创建临时性的备份文件时,还须指定介质类型和完整的路径和文件名。临时性备份文件的创建在如下T-SQL语句示例中,创建了一个磁盘类型的临时性的备份文件,且把TECHING_MIS系统数据库备份到所指定的临时性备份文件上。USE MASTERBACKUP DATABASE TECHING_MIS TO DISK=D:SQL2005TECHING.BAKGO BACKUP语句 BACKUP DATABASEdata

45、base_name|database_name_var TOn3.还原 还原与备份相对应,是为对付已经遇到的系统失败而采取的操作。它建立在备份操作的基础上。在进行数据库还原时,系统首先要进行安全性检查,然后,针对不同的数据库备份类型,可采取不同的数据库还原方法。验证备份内容还原数据库之前,应该验证使用的备份文件是否有效,并查看备份文件中的内容是否是所需要的内容。以下RESTORE语句用于备份内容的验证:RESTORE HEADERONLY:获取某个备份文件的标题信息。RESTORE FILELISTONLY:返回原数据库或事务日志的文件信息。RESTORE LABELONLY:返回包含备份文件

46、的备份介质的信息。RESTORE VERWYONLY:验证备份文件是否有效。RESTORE语句 RESTORE DATABASEdatabase_name|database_name_var FROMn还原数据库的操作若数据库遭受破坏,则可从完全数据库备份中来还原。这种还原也是所有还原操作的基础。若只使用一个完全数据库的备份,可以在还原时使用RECOVERY选项。如果有多个将要还原的内容,在执行完全数据库还原时使用NORECOVERY选项。还原数据库的操作示例使用RESTORE语句还原数据库。USE MASTERRESTORE DATABASE TEACHING_MIS FROM MYBACKUP01WITH NORECOVERYGORESTORE LOG TEACHING_MIS FROM TEACHING_MISLOG WITH NORECOVERY还原数据库的操作

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com