数据库应用技术:第12章 数据库安全管理

上传人:cl****1 文档编号:564604997 上传时间:2022-09-02 格式:DOC 页数:26 大小:2.24MB
返回 下载 相关 举报
数据库应用技术:第12章 数据库安全管理_第1页
第1页 / 共26页
数据库应用技术:第12章 数据库安全管理_第2页
第2页 / 共26页
数据库应用技术:第12章 数据库安全管理_第3页
第3页 / 共26页
数据库应用技术:第12章 数据库安全管理_第4页
第4页 / 共26页
数据库应用技术:第12章 数据库安全管理_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《数据库应用技术:第12章 数据库安全管理》由会员分享,可在线阅读,更多相关《数据库应用技术:第12章 数据库安全管理(26页珍藏版)》请在金锄头文库上搜索。

1、25第12章 数据库安全管理第12章 数据库安全管理本章主要介绍SQL Server 2005数据安全管理中的事务的概念、特性及类型;角色的概念、种类及作用;以及权限的层次结构。事务、权限和角色是SQL Server 2005数据库安全管理中的重要部分。数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。权限是通过角色成员来获得的。角色就是一组具有相同权限的用户的集合。不同角色中的成员有不同的权限。12.1 事务事务是作为单个逻辑工作单元执行的一系列操作。事务处理可以确保只有在事务性单元内的所有操作都成功完成的情况下,才会永久更

2、新面向数据的资源。通过将一组相关操作组合为一个或者全部成功或者全部失败的单元,可以简化错误恢复并使应用程序更加可靠。例如,网上购物的一次交易,其付款过程至少包括以下数据库操作步骤。更新客户所购商品的库存信息;保存客户付款信息,可能包括与银行系统的交互;生成订单并且保存到数据库中;更新用户相关信息,例如购物数量等等。正常情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错(例如在更新商品库存信息时发生异常、该顾客银行帐户存款不足等),都将导致交易失败。一旦交易失败,数据库中所有信息都必须保持交易前的状态不变,比如最后一步

3、更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库原来的状态,即库存信息没有被更新,用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。12.1.1 事务特性每一个事务都具有原子性、一致性、隔离性和持久性,也称为事务的ACID属性。(1)原子性事务必须是原子工作单元,对其数据的修改,或者全都执行,或者全都不执行。(2)一致性事务在完成时,必须使所有的数据都保持一致性状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B树索引或双向

4、链表)都必须是正确的。(3)隔离性由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。事务识别数据时数据所处的状态,或者是另一并发事务修改它之前的状态,或者是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重做一系列事务,以使数据结束时的状态与原始事务执行的状态相同。(4)持久性事务完成之后,它对于系统的影响是永久性的,该修改即使出现系统故障也将一直保持。SQL程序员要负责启动和结束事务,同时强制保持数据的逻辑一致性。程序员必须定义数据修改的顺序,使数据相对于其组织的业务规则保持一致。程序员将这些修改语句包括到一个事务中,使SQL

5、Server 2005 Database Engine能够强制该事务的物理完整性。数据库系统应提供一种机制,保证每个事务的物理完整性。数据库引擎提供: 锁定设备,使事务保持隔离。 记录设备,保证事务的持久性,即使服务器硬件、操作系统或数据库引擎实例自身出现故障,该实例也可以在重新启动时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的点。 事务管理特性,强制保持事务的原子性和一致性,事务启动之后,就必须成功完成,否则数据库引擎实例将撤消该事务启动之后对数据所做的所有修改。12.1.2 事务管理应用程序主要通过指定事务启动和结束的时间来控制事务。可以使用Transact-SQL语句或数据

6、库应用程序编程接口(API)函数来指定这些时间。系统还必须能够正确处理那些在事务完成之前便终止事务的错误。1. 事务类型在SQL Server中有三种事务类型,分别是隐式事务、显式事务、自动提交事务,缺省为自动提交。(1)自动提交事务自动提交事务是指对于用户发出的每条Transact-SQL语句,SQL Server都会自动开始一个SQL Server事务,并且在执行后自动进行提交操作来完成这个事务,也可以说在这种事务模式下,一个Transact-SQL语句就是一个事务。(2)显式事务显式事务是指在自动提交模式下以BEGIN TRANSACTION开始一个SQL Server事务,以COMMI

7、T或ROLLBACK结束一个SQL Server事务,以Commit结束事务是把SQL Server事务中的修改永久化,即使这时发生断电这样的故障。例如下面是SQL Server中的一个显式事务的例子。BEGIN TRANSACTIONUPDATE student SET SNAME=XIE WHERE SNO=S1INSERT INTO student VALUES (S9, XI, FM,21)COMMIT(3)隐式事务隐式事务是指在当前会话中用SET IMPLICIT_TRANSACTIONS ON命令设置的事务类型,这时任何DML语句(DELETE、UPDATE、INSERT)都会开始

8、一个事务,而事务的结束也是用COMMIT或ROLLBACK。2. 启动和技术事务使用API函数和Transact-SQL语句,可以在SQL Server Database Engine实例中将事务作为显式、自动提交或隐式事务启动和结束。(1)显式事务显式事务就是可以显式地在其中定义事务的开始和结束的事务。 BEGIN TRANSACTION标记显式连接事务的起始点。 COMMIT TRANSACTION或COMMIT WORK如果没有遇到错误,可使用该语句成功地结束事务。该事务中的所有修改了的数据在数据库中都将永久有效。事务占用的资源将被释放。 ROLLBACK TRANSACTION或ROL

9、LBACK WORK用来清除遇到错误的事务。该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。(2)自动提交模式自动提交模式是SQL Server Database Engine的默认事务管理模式。每个Transact-SQL语句在完成时,都被提交或回滚。如果一个语句成功地完成,则提交该语句;如果遇到错误,则回滚该语句。只要没有显式事务或隐式事务覆盖自动提交模式,与数据库引擎实例的连接就以此默认模式操作。在使用BEGIN TRANSACTION语句启动显式事务或隐式事务模式设置为开启之前,与数据库引擎实例的连接一直以自动提交模式操作。当提交或回滚显式事务,或当关闭隐式事务模

10、式时,连接将返回到自动提交模式。l 编译和运行时错误在自动提交模式下,有时看起来好像数据库引擎实例回滚了整个批处理而不是仅仅一个Transact-SQL语句。当遇到的错误是编译错误而非运行时错误时,会发生这种情况。编译错误会阻止数据库引擎生成执行计划,就使得批处理中的任何语句都不会执行。尽管看起来好像是回滚了产生错误的语句之前的所有语句,但实际上该错误阻止了批处理中的所有语句的执行。【例12.1】在以下示例中,由于发生编译错误,第三个批处理中的INSERT语句都没有执行。但看起来好像是前两个INSERT语句没有执行便进行了回滚。USE AdventureWorksGOCREATE TABLE

11、TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, bbb)INSERT INTO TestBatch VALUSE (3, ccc) - 语法错误GOSELECT * FROM TestBatch - 没有任何记录被插入并显示GO【例12.2】在下面的示例中,第三个INSERT语句产生运行时重复键错误。由于前两个INSERT语句成功地执行并且提交,因此它们在运行时错误之后被保留下来。USE AdventureWo

12、rksGOCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, bbb)INSERT INTO TestBatch VALUES (1, ccc) - 发生重复键错误GOSELECT * FROM TestBatch - 显示前两条记录GO【例12.3】在下面的示例中,执行并提交了前两条INSERT语句,但第三条INSERT语句由于引用一个不存在的表而产生运行时错误,因此只有前两行仍然保留在

13、TestBatch表中。USE AdventureWorksGOCREATE TABLE TestBatch (Cola INT PRIMARY KEY, Colb CHAR(3)GOINSERT INTO TestBatch VALUES (1, aaa)INSERT INTO TestBatch VALUES (2, bbb)INSERT INTO TestBch VALUES (3, ccc) - 表名称出现错误GOSELECT * FROM TestBatch -显示前两条记录GO(3)隐式事务当连接以隐式事务模式进行操作时,SQL Server Database Engine实例将在

14、提交或回滚当前事务后自动启动新事务。无需描述事务的开始,只需提交或回滚每个事务。隐式事务模式生成连续的事务链。为连接将隐式事务模式设置为打开(SET IMPLICIT_TRANSACTIONS ON)之后,当数据库引擎实例首次执行如表12.1所示的任何语句时,都会自动启动一个事务。表12.1 能够启动事务的语句ALTER TABLEINSERTCREATEOPENDELETEREVOKEDROPSELECTFETCHTRUNCATE TABLEGRANTUPDATE在发出COMMIT或ROLLBACK语句之前,该事务将一直保持有效。在第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,数

15、据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链,直到隐性事务模式关闭为止。3. 事务处理过程中的错误如果某个错误使事务无法成功完成,SQL Server会自动回滚该事务,并释放该事务占用的所有资源。如果客户端与数据库引擎实例的网络连接中断了,那么当网络向实例通知该中断后,该连接的所有未完成事务均会被回滚。如果客户端应用程序失败或客户机崩溃或重新启动,也会中断连接,而且当网络向数据库引擎实例通知该中断后,该实例会回滚所有未完成的连接。如果客户端从该应用程序注销,所有未完成的事务也会被回滚。12.2 SQL Server的安全机制SQL Server 2005的安全性是指保护数据库中的各种数据,以防止因非法使用而造成数据的泄密和破坏。SQL Server 2005的安全管理机制包括身份验证(authentication)和授权(authorization)两种类型。身份验证是指检验用户的身份标识,授权是指允许用户做些什么。验证过程在用户登录操作系统和SQL Server 2005的时候出现,授权过程在用户试图访问数据或执行命令时出现。12.2.1 安全机制级别SQL Se

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

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号