1、第12章数据库平安管理本章主要介绍SQL Server 2005数据平安管理中的事务的概念、特性及类型;角色的概 念、种类及作用;以及权限的层次结构。事务、权限和角色是SQL Server 2005数据库平安管理中的重要局部。数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做, 要么全不做,它是一个不可分割的工作单位。权限是通过角色成员来获得的。角色就是一组具有相同权限的用户的集合。不同角色中 的成员有不同的权限。12.1 事务事务是作为单个逻辑工作单元执行的一系列操作。事务处理可以确保只有在事务性单元 内的所有操作都成功完成的情况下,才会永久更新面向数据的资源。通过
2、将一组相关操作组 合为一个或者全部成功或者全部失败的单元,可以简化错误恢复并使应用程序更加可靠。例如,网上购物的一次交易,其付款过程至少包括以下数据库操作步骤。更新客户所购商品的库存信息;保存客户付款信息,可能包括与银行系统的交互;生成订单并且保存到数据库中;更新用户相关信息,例如购物数量等等。正常情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成 功地更新。但是,如果在这一系列过程中任何一个环节出了过失(例如在更新商品库存信息 时发生异常、该顾客银行帐户存款缺乏等),都将导致交易失败。一旦交易失败,数据库中 所有信息都必须保持交易前的状态不变,比方最后一步更新用户信息时
3、失败而导致交易失 败,那么必须保证这笔失败的交易不影响数据库原来的状态,即库存信息没有被更新,用户 也没有付款,订单也没有生成。否那么,数据库的信息将会一片混乱而不可预测。数据库事务正是用来保证这种情况下交易的平稳性和可预测性的技术。事务特性每一个事务都具有原子性、一致性、隔离性和持久性,也称为事务的ACID属性。(1)原子性事务必须是原子工作单元,对其数据的修改,或者全都执行,或者全都不执行。(2)一致性事务在完成时,必须使所有的数据都保持一致性状态。在相关数据库中,所有规那么都必 须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如B 树索引或双向链表)都必须是正
4、确的。色以具有某些权限。7)在图12.4的左侧“选择页”中选择“用户映射”,可以选择映射到此登录名的数据库 用户及相应的数据库角色。8)单击【确定】按钮,完成从Windows用户或组到SQL Server登录帐号的映射。(2)创立SQL Server登录帐号如果使用混合验证模式或不通过Windows用户或组连接SQL Server,那么需要在SQL Server下创立用户登录权限,使用户得以连接使用SQL Server身份验证的SQL Server 2005 Database Engine 实例。使用图形工具创立SQL Server登录帐号的方法与将Windows用户或组映射到SQL Serv
5、er登录帐号的方法相同,只是在图12.4中选择“SQL Server身份验证”,并设置登录 名及密码。4.删除登录帐号当不再使用某一登录帐号时应该将其删除,以保证数据库的平安性和保密性。可以使用 图形工具删除登录帐号。1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,展开服务器名称,在“平安性”下选择“登录名”。2)右击要删除的登录名,在出现的快捷菜单中选择“删除”,在出现的“删除对象”界 面中,单击【确定】按钮。注意:删除Windows登录帐号,只是删除了到SQL Server登录帐号的映射,不能登录 到SQL Ser
6、ver中,但该用户没有在Windows中删除。数据库用户登录ID成功地进行了身份险证后,只是建立了到SQLServer的连接,要实现对数据库 及数据库对象的访问,可通过两种途径来实现:一种是登录ID与相应数据库中的用户ID相 关联来访问数据库,另一种是如果登录ID不能与任何数据库用户ID关联,但此数据库启用 了 Guest客户,那么可以通过与Guest客户相关联来访问数据库。后一种方法不提倡采用,因 为任何没有数据库权限的用户都可通过Guest客户获取数据库的访问权限,这样降低了平安 性。SQLServer数据库用户,用于管理对指定数据库使用的对象,控制对数据库及数据库对 象的访问权限。一般地
7、,登录ID与数据库用户ID是相同的。一个登录ID可以与多个数据 库用户相关联。用户信息均存储在数据库的系统表sysusers中。权限的分配是通过数据库用户ID实现的,根据用户的性质合理分配最小权限。在安装SQL Server后,默认数据库中包含两个用户:dbo和guest,即系统内置的数据 库用户。dbo代表数据库的拥有者(database owner)。每个数据库都有dbo用户,创立数据库 的用户是该数据库的dbo,系统管理员也自动被映射成dbo。guest用户帐号在安装完SQL Server系统后被自动加入到master、pubs、lempdb数据库 中,且不能被删除。用户自己创立的数据库
8、默认情况下不会自动加入guest帐号,但可以手 工创立。guesi用户也可以像其他用户一样设置权限。当一个数据库具有guest用户帐号时, 允许没有用户帐号的登录者访问该数据库。所以guest帐号的设立方便了用户的使用,但如 使用不当也可能成为系统平安隐患。可以使用图形工具将要求访问数据库的登录帐户添加到数据库中成为数据库用户,并授 予其相应的活动权限,以便访问数据库。1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,单击服务器名称以展开服务器树。2)展开“数据库”,然后根据数据库的不同,选择用户数据库,如teachin
9、g。3)展开“平安性”,右键单击其中的“用户”,然后单击“新建用户”,如图12.6所示。J MMiNiMn*9*f*ne Studio .文桂(F) MbE 4V) UI(T) WQ(W) ttE(Q iHttH)图12.6新建用户界面4)在出现的如图12.7所示的“数据库用户-新建”窗口中,可以设置用户名、架构及数 据库角色成员身份。图12.7 ”数据库用户-新建”窗口5)在图12.7中单击“登录名”右侧的【浏览】按钮,会出现图12.8所示的“选择登录 名”对话框,可以通过【浏览】按钮选择用户名,也可以直接输入用户名。用户名可以与登 录帐号名不同。设置用户名后,单击【确定】按钮,返回图12.
10、7 “数据库用户-新建”窗口。图12.8 ”选择登录名”对话框6)在“此用户拥有的架构”和“数据库角色成员身份”中选择相应的架构和数据库角色,如图12.9所示,单击【确定】按钮,完成数据库用户的创立。数索客用户.拜建送择页对值 视全原 常安犷 三彳一象 性送择页对值 视全原 常安犷 三彳一象 性连接膨滔YZM-PC连排、.YZM-PCyuj 1 皿if皆看性拾星也避度就绪口脚本 D帮助用户名也)。登录名Q): jc ji rd , HZ I* rj* 密钥名称购:C无登录名也)默认架佝6)此用户拥有的架构(Q).拥有的架构db_dMari tor db ddladminEl db_denyda
11、tareader : db-denydatwriterj. db_o*n”db_s e cur i tyadn x nguest数据摩角色成员身份)数据摩角色成员身份)国包成员db.datareader db_d*Wri t* db._ddladn.in db_denydatareadcr db_denydatwri ter画2r确定 I取消db_scuri tyadum图12.9 ”选择登录名”对话框角色角色是指为管理相同权限的用户而设置的用户组,也就是说,同一角色下的用户权限都 是相同的。将一些用户添加到具体某种权限的角色中,权限在用户成为角色成员时自动生效。在SQL Server数据库中
12、,把相同权限的一组用户设置为某一角色后,当对该角色进行 权限设置时,这些用户就自动继承修改后的权限。这样,只要对角色进行权限管理,就可以 实现对属于该角色的所有用户的权限管理,极大地减少了工作量。一个用户可以同时属于不同的角色,也就是说,一个用户可以同时拥有多个角色中的权 限,但这些权限不能冲突,否那么只能拥有最小的权限。SQL Server数据库的角色通常可以分为以下三类。前两种是系统预定义的。1 .服务器角色服务器角色具有一组固定的权限,作用域在服务器范围内,是独立于数据库的管理特权 分组,主要实现SA、数据库创立者及平安性管理员职能,且不能更改分配给它们的权限。 具有服务器角色的用户必须
13、绝对可靠,并且人员要少。SQL Server 2005中的服务器角色都是固定的,不允许改变。固定服务器角色的作用域为服务器范围。固定服务器角色的每个成员都可以向其所属角 色添加其他登录名。表12.2列出了固定服务器角色的名称及权限。表12.2固定服务器角色固定服务器角色权限bulkadmin可以运行BULK INSERT语句。dbcreator数据库创立者,可以创立、更改、删除和还原任何数据库。diskadmin用于管理磁盘文件。processadmin进程管理员,可以终止SQL Server实例中运行的进程。平安管理员,管理登录名及其属性。它们可以用GRANT. DENY 和REVOKE命令
14、授予、禁止和回收服务器级权限。也可以security ad minGRANT. DENY和REVOKE数据库级权限。另外,它们可以重 置SQL Server登录名的密码。serveradmin服务器管理员,可以更改服务器范围的配置选项和关闭服务器。设置管理员,可以添加和删除链接服务器,并且也可以执行某些setupadmin系统存储过程。系统管理员,可以在服务器中执行任何活动。默认情况下,sysadminWindows BUILTINXAdministrators组(本地管理员组)的所有成员 都是sysadmin固定服务器角色的成员。不能添加、删除或修改固定服务器角色,只能将登录帐户添加到固定服
15、务器角色中。使用图形工具添加登录帐号到固定服务器角色的过程如下。1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,展开服务器名称,在“平安性”选择“服务器角色”。2)在右侧窗口中出现的当前服务器角色名中,右击要添加登录帐号的角色,如dbcreator, 在出现的快捷菜单中选择“属性”,如图12.10所示。文苗F) MHO B(V) IA(T) D(W) K&O2 y s mq YZM PC (SQL Serve,9a4033 YZM Paoaeirtti Cj上 u atw 色j服务器角色YZMPC法宝性UB务Eft94
16、 禁 M 幽 2 S 0 Q9 2 R btfi 学 :图12.10服务器角色界面3)在出现的图12.11所示的“服务器角色属性”窗口中,单击【添加】按钮,选择要添 加的登录帐号名,也可以选择【删除】按钮删除登录帐号,设置后单击【添加】按钮完成添 加。设置后单击【确定】按钮。图12.11”服务器角色属性”窗口2 .数据库角色数据库角色在数据库级别上定义,提供数据库层管理特权的分组,主要实现数据库的访 问、备份与恢复及平安性等职能。它也有一系列预定义的权限,可以直接给用户指派权限, 但在大多数情况下,只要把用户放在正确的角色中就会给予它们所需要的权限。一个用户可 以是多个角色中的成员,其权限等于
17、多个角色权限的“和”,任何一个角色中的拒绝访问权 限会覆盖这个用户所有的其他权限。数据库角色分为固定数据库角色和用户定义的数据库角色。固定数据库角色不允许改 变。用户定义的数据库角色只适用于数据库级别,通过用户定义的角色可以轻松地管理数据 库中的权限。固定数据库角色是在数据库级别定义的,并且存在于每个数据库中。db_owncr和 db_securityadmin数据库角色的成员可以管理固定数据库角色成员身份,但只有db-owner数 据库的成员可以向db_owner固定数据库角色中添加成员。表12.3显示了固定数据库角色到权限的映射关系。表12.3固定数据库角色固定数据库角色权限db_acce
18、ssadmin数据库访问权限管理者,可以为Windows登录帐户、Windows 组和SQL Server登录帐户添加或删除访问权限。db_backupoperator可以备份该数据库。db_datareader可以读取所有用户表中的所有数据。db_datawriter可以在所有用户表中添加、删除或更改数据。db_ddladmin可以在数据库中运行任何数据定义语言(DDL)命令。db_denydatareader不能读取数据库内用户表中的任何数据。db_denydatawriter不能添加、修改或删除数据库内用户表中的任何数据。db_owner数据库所有者,可以执行数据库的所有配置和维护活动。
19、db_securityadmin可以修改角色成员身份和管理权限。public每个数据库用户都属于public数据库角色。不能将用户、组或 角色指派为public角色的成员,也不能删除public角色的成员。与固定服务器角色一样,对固定数据库角色也不能进行添加、删除或修改等操作,只能 将数据库用户添加到固定数据库角色中。但对于数据库角色,用户可以创立及删除自定义的 数据库角色。可以使用图形工具创立用户自定义的数据库角色,操作过程如下。1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,单击服务器名称以展开服务器树。2)展开“
20、数据库”,然后根据数据库的不同,选择用户数据库,如teaching。3)展开“平安性”下面的“角色”,右键单击其中的“数据库角色”,然后单击“新建数据库角色”,如图12.12所示。1/ Micrct GQl S.rwr Man9*rn*n,幺do5WH MIE) ffl(v) ZA(T)eECW) 16(0 XH)HH0) X LHH0) X L16 VZM-PC (SQL Sev 9,040358 mLsj ficumsX 二j EK笠H (J AdvreureWorkt U AdvrturWxk%DW8 3 tMcKng图以用KM类辱, 凰一霍 s)d3 dd同义反 ffiCiHTMftf
21、fi 2 $eMce Broke* ffid?4ca平安性 由二用金 HCae/hMMMMMMBI X的怨的留N db.acce4S*dmn2003/4/B0 db_b*ckupoprlorZW80 db.dMMeder2003/4/B0 db_dM4WTflf2003/4/8%db_ddl*dradf2003/4/8g db.derydMwnterW03/M勺 db.OWlMf2003/4/8% db.vrif)-dnMn200 W82003/4/B的怨的留N db.acce4S*dmn2003/4/B0 db_b*ckupoprlorZW80 db.dMMeder2003/4/B0 db_
22、dM4WTflf2003/4/8%db_ddl*dradf2003/4/8g db.derydMwnterW03/M勺 db.OWlMf2003/4/8% db.vrif)-dnMn200 W82003/4/B:!一aclGaGa8G ZIH TEF 网 .数据库角色 YZMPCE6Mch”mnWfiHS焦色10 fl图12.12新建数据库角色界面4)在出现的如图12.13所示的“数据库角色-新建”窗口中,可以设置角色名,选择拥有 的架构,以及添加和删除属于该数据库角色的成员,设置后单击【确定】按钮。图12.13 ”数据库角色-新建”窗口可以使用图形工具将数据库用户添加到某数据库角色中或删除。
23、除了在创立数据库角色 时可以添加或删除用户,也可以使用下面的过程完成添加和删除用户。1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,单击服务器名称以展开服务器树。2)展开“数据库”,然后根据数据库的不同,选择用户数据库,如teaching。3)展开“平安性”下面的“角色”,选择“数据库角色”,在右侧出现的数据库角色名 中右击要添加或删除用户的数据库角色,出现图12.13所示的“数据库角色属性”对话框, 可以为选择的数据库角色添加或删除用户。3.应用程序角色应用程序角色是一个数据库主体,它使应用程序能够用其自身的、类似用
24、户的特权来运 行。使用应用程序角色,可以只允许通过特定应用程序连接的用户访问特定数据。马数据库 角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的。应用程序角色 使用两种身份验证模式,可以使用sp_selapprole来激活,并且需要密码。因为应用程序角色 是数据库级别的主体,所以它们只能通过其他数据库中授予guest用户帐户的权限来访问这 些数据库。因此,任何已禁用guest用户帐户的数据库对其他数据库中的应用程序角色都是 不可访问的。登录、用户、角色是SQL Server 2005平安机制的基础。三者联系如下: 服务器角色和登录名相对应。 数据库角色和用户对应的,数据库角色
25、和用户都是数据库对象,定义和删除时必须 选择所属的数据库。 一个数据库角色中可以有多个用户,一个用户也可以属于多个数据库角色。12. 3 SQL Server的权限管理设置用户对数据库的操作权限称为授权,SQL Server中未授权的用户将无法访问或存取 数据库数据。SQL Server通过权限管理指明哪些用户被批准使用哪些数据库对象和 Transact-SQL 语句。SQL Server中的权限可授予用户平安帐户或用户平安帐户所属的组或角色。SQL Server 中权限可识别以下四类用户,不同类型的用户形成不同层次。 系统管理员(SA):服务器层权限,在服务器的所有数据库中对任何用户对象有全
26、部 权限。 数据库拥有者(DBO):数据库层权限,在其拥有的数据库中对任何用户对象有全部 权限。 数据库对象拥有者:数据库对象层。 数据库对象的一般用户:数据库对象用户层。12. 3.1权限类型SQL Server中的权限可以分为以下三种。1 .对象权限对象权限(SELECT、UPDATE、INSERT、DELETE EXEC、DRI)管理由明E些数据库用 户来使用哪些数据库对象,是处理数据或执行过程时需要的权限类别,由数据库对象拥有者 授予、废除或撤消。用户必须只授予在其工作范围内的权限,而禁止其在工作范围外的所有 活动(最小权限),以确保数据平安。对象权限是指用户在数据库中执行与表、视图、
27、存储过程等数据库对象有关的操作的权 限。例如,是否可以查询表或视图,是否允许向表中插入记录或修改、删除记录,是否可以 执行存储过程等。对象权限的主要内容有: 对表和视图,是否可以执行SELECT、INSERT、UPDATE、DELETE语句; 对表和视图的列,是否可以执行SELECT、UPDATE语句的操作,以及在实施外键 约束时是否可以作为REFERENCES参考的列; 对存储过程,是否可以执行EXECUTEo2 .语句权限语句权限是指用户创立数据库和数据库中对象(如表、视图、自定义函数、存储过程等) 的权限。例如,如果用户想要在数据库中创立表,那么应该向该用户授予CREATE TABLE语
28、(3)隔蜀性由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。事务识别数据时数据 所处的状态,或者是另一并发事务修改它之前的状态,或者是第二个事务修改它之后的状态, 事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重做 一系列事务,以使数据结束时的状态与原始事务执行的状态相同。(4)持久性事务完成之后,它对于系统的影响是永久性的,该修改即使出现系统故障也将一直保持。SQL程序员要负责启动和结束事务,同时强制保持数据的逻辑一致性。程序员必须定义 数据修改的顺序,使数据相对于其组织的业务规那么保持一致。程序员将这些修改语句包括到 一个事务中,使SQL Serve
29、r 2005 Database Engine能够强制该事务的物理完整性。数据库系统应提供一种机制,保证每个事务的物理完整性。数据库引擎提供: 锁定设备,使事务保持隔离。 记录设备,保证事务的持久性,即使服务器硬件、操作系统或数据库引擎实例自身 出现故障,该实例也可以在重新启动时使用事务日志,将所有未完成的事务自动地回滚到系 统出现故障的点。 事务管理特性,强制保持事务的原子性和一致性,事务启动之后,就必须成功完成, 否那么数据库引擎实例将撤消该事务启动之后对数据所做的所有修改。12. 1.2事务管理应用程序主要通过指定事务启动和结束的时间来控制事务。可以使用Transact-SQL语句 或数据
30、库应用程序编程接口(API)函数来指定这些时间。系统还必须能够正确处理那些在事 务完成之前便终止事务的错误。1 .事务类型在SQL Server中有三种事务类型,分别是隐式事务、显式事务、自动提交事务,缺省 为自动提交。(1)自动提交事务自动提交事务是指对于用户发出的每条Transact-SQL语句,SQL Server都会自动开始一 个SQL Server事务,并且在执行后自动进行提交操作来完成这个事务,也可以说在这种事 务模式下,一个Transact-SQL语句就是一个事务。(2)显式事务显式事务是指在自动提交模式下以BEGIN TRANSACTION开始一个SQL Server事务, 以
31、COMMIT或ROLLBACK结束一个SQL Server事务,以Commit结束事务是把SQL Server 事务中的修改永久化,即使这时发生断电这样的故障。例如下面是SQL Server中的一个显 式事务的例子。BEGIN TRANSACTIONUPDATE student SET SNAME= XIE WHERE SNO= STINSERT INTO student VALUES (* S9 , XV FM* ,21)COMMIT(3)隐式事务隐式事务是指在当前会话中用SET IMPLICIT_TRANSACTIONS ON命令设置的事务类句权限。语句权限适用于语句自身,而不是针对数据库
32、中的特定对象。语句权限实际上是授予用户使用某些创立数据库对象的Transact SQL语句的权力。只有系统管理员、平安管理员和数据库所有者才可以授予用户语句权限。语句权限包括 CREATE DATABASE、CREATE DEFAULT、CREATE RULE、CREATE TABLE、CREATE VIEW、CREATE PROCEDURE、CREATE FUNCTION BACKUP DATABASE、BACKUP LOG 等操作。3.隐含权限隐含权限是指系统自行预定义而不需要授权就有的权限,包括固定服务器角色、固定数 据库角色和数据库对象所有者所拥有的权限。设置权限1 .使用图形工具设置
33、用户或角色权限(1)授予或拒绝语句权限1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,单击服务器名称,以展开服务器树。2)展开“数据库”,右击用户数据库,如teaching。3)在出现的快捷菜单中选择“属性”,出现如图12.14所示的“数据库属性-teaching” 窗口。性志尾日 男规件 限展像芳 顾常文文选权犷适事 选*彳-_夕_矛_*_f_.数据库底性-1 0 I 回与脚本母初助服务总名梆G):YZIbPC苦假设照符能枚限jtt据库名称 0!):leaching用户或角色QD:类型用户钠& yinrn连接服务器Y
34、ZM-FC连招:YZN-PCyujian进度授权者Alter any application roledboAlter any assenblydb。Alter any Azynnetric keydb。2tor any crtiicatdbo2tor My contractdboMt” 5y database DDL tridboAlter any database event ndboAlter any dataspacedboAlter any full text catRocdboyzn的H式权限电): 权限有效权限授予具有授予权限拒绝81113 H0BE1QEKJBKJBn修定取消图
35、12.14“数据库属性-teaching”窗口4)在12.14的左侧“选择页”中选择“权限”,在右侧界面中选择需要为该用户授予或 拒绝的语句权限,同时可以授予转授权限。设置后单击【确定】按钮。(2)授予或拒绝对象权限1)连接到相应的Microsoft SQL Server Database Engine实例之后,在“对象资源管理器” 中,单击服务器名称以展开服务器树。2)展开“数据库”,选择用户数据库,如teaching。展开用户数据库及其下的“表”。3)右击要设置权限的表名,如“s_c,出现如图12.15所示的“表属性-s_c”窗口。图12.15 表属性-s_c”窗口4)在12.15的左侧“
36、选择页”中选择“权限”,在右侧界面中选择需要为该用户授予或 拒绝的对象权限,同时可以授予转授权限,设置后单击【确定】按钮。图12.13 ”数据库角色-新建”界面2 .使用Transact-SQL命令设置用户或角色权限(1)权限的授予可以使用Transact-SQL命令GRANT将权限授予用户,语法格式如下。GRANT ALL PRIVILEGES | permission f ( column 1) ON securable TO security_account f v.,n WITH GRANT OPTION 各选项含义如下。 ALL PRIVILEGES :授予ALL参数相当于授予以下权
37、限。 如果平安对象为数据库,那么ALL表示BACKUP DATABASE、BACKUP LOG、 CREATE DATABASE CREATE DEFAULT. CREATE FUNCTIONsCREATE PROCEDURE CREATE RULE、CREATE TABLE 和 CREATE VIEW 权限。 如果平安对象是存储过程,那么ALL表示EXECUTE权限。 如果平安对象为表或视图,那么ALL表示DELETE、INSERT、REFERENCES、 SELECT 和 UPDATE 权限。 permission:当前授予的权限名称。如节所述。 ( column ,.n ):指定表中将授
38、予其权限的列的名称。 securable:指定将授予其权限的平安对象,可以是表、视图、存储过程等。 TO security .account:指定权限将授予的对象或用户帐户,如当前数据库的用户与 角色、Windows用户或组、SQLServer角色。 WITH GRANT OPTION:指示被授权者在获得指定权限的同时还可以将指定权限 授予其他用户帐户。【例12.4】以下例如将CREATE TABLE权限授予yzm用户。USE teachingGOGRANT CREATE TABLE TO yzmGO【例12.5】以下例如将对student表的更新及插入权限授予yzm用户。USE teachi
39、ngGOGRANT UPDATE, INSERT on student TO yzmGO【例12.6】以下例如将对student表的学号和姓名列的查询权限授予yzm用户。USE teachingGOGRANT SELECT(SNO, SNAME) ON student TO yzmGO(2)权限的禁止禁止权限就是删除以前授予用户、组或角色的权限,禁止从其他角色继承的权限,且确 保用户、组或角色将来不继承更高级别的组或角色的权限。可以使用Transact-SQL命令DENY将权限禁止,语法格式如下。DENY ALL PRIVILEGES | permission ( column ) ON se
40、curable TO securily_account CASCADE其中:CASCADE指定授予用户禁止权限,并撤销用户的WITH GRANT OPTION权限。【例12,71以下例如禁止yzm用户的CREATE VIEW权限。USE teachingGODENY CREATE VIEW TO yzmGO权限的撤销撤销权限用于删除用户的权限,但撤销权限是删除曾经授予或拒绝的权限,并不禁止用 户、组或角色通过其他方式继承权限。撤销了用户的某一权限并不一定能够禁止用户使用该 权限,因为用户可能通过其他角色继承这一权限。可以使用Transact-SQL命令REVOKE将授予或拒绝的权限撤销,语法格
41、式如下。REVOKE f GRANT OPTION FOR ALL PRIVILEGES | permission ( column ,,n ) )ON securable TO | FROM security_account CASCADE其中:GRANT OPTION FOR将撤消授予指定权限的能力,即撤销转授权限。使用 CASCADE参数时,需要具备该功能。【例12.8以下例如将撤销yzm用户的CREATE TABLE权限。USE teachingGOREVOKE CREATE TABLE FROM yzmGO【例12.9以下例如将撤销yzm用户对student表的学号和姓名列的查询权限
42、。USE teachingGOREVOKE SELECT(SNO, SNAME) ON student FROM yzmGO习.题一、选择题1. 通过发出Transact-SQL BEGIN TRANSACTION语句来启动的事务是()。A.自动提交事务B.隐式事务C.批范围的事务D.显式事务2. SQLServer级别的主体是()。A. Windows域登录名B.应用程序角色C. SQLServer登录名D.数据库用户3 .默认情况下,数据库创立时包含的用户是()。A. saB. administrator C. guestD. dba4 .在固定数据库角色中可以向自身角色添加成员的角色是(
43、 )oA. db_securityadminB.db_accessadminC. db_datareaderD.db_owner5 .()是一个数据库主体,它使应用程序能够用其自身的、类似用户的特权来运行。6.A.数据库角色 B.应用程序角色SQL Server 2005中的默认登录帐户是(C.服务器角色)。D.数据库用户A. saB. administratorC. guestD. dba7 .事务结束时,所有的内部数据结构都必须是正确的,是事务的()0A.原子性B. 一致性C.隔离性D.永久性8 .对表的查询权限属于( )oA.语句权限 B.对象权限C.隐含权限D.命令权限9 .()固定服
44、务器角色的成员可以添加和删除链接服务器。A. setupadmin B. serveradmin1().属于Windows级别的主体是()。A. Windows本地登录名C.数据库用户C. sysadminD. processadminB.应用程序角色D. SQL Server 登录名二、填空题1. 事务的 是指或者全都执行,或者全都不执行。2. 事务正常提交的语句是 o3. 是SQL Server Database Engine的默认事务管理模式。4. 是可以请求SQLServer资源的个体、组和过程。5. 数据库用户是 级别上的主体。6. 就是一组具有相同权限的用户的集合。7. 应用程序主
45、要通过指定事务 的时间来控制事务。8. 模式是SQL Server Database Engine的默认事务管理模式。9. 每个数据库用户都属于 数据库角色。10. 可以使应用程序能够用其自身的、类似用户的特权来运行。三、简答题1. 什么是事务?事务具有哪些特性?2. 事务有哪几种类型?每种类型的事务如何启动和结束?3. 什么是SQLServer中的主体?主体有哪些级别?4. SQLServer中的平安级别有哪些?5. SQLServer中有哪些主要权限?习题答案一、选择题l.D 2.C3.C4. D 5. B 6. A 7. B 8. B 9. A1(). A二、填空题1.原子性 2. COMMIT 3.自动提交模式 4.主体 5.数据库6.角色7.启动和结束 8.自动提交 9. public 10.应用程序角色三、简答题型,这时任何DML语句(DELETE、UPDATE、INSERT)都会开始一个事务,而事务的结束 也是用 COMMIT 或 ROLLBACKo2 .启动和技术事务使用API函数和Transact-SQL语句,可以在SQL Server Database Engine实例中将事务 作为显式、自动提交或隐式事务启动和结束。(1)显式事务显式事务就是可以显式地在其中定义事务的开始和结束的事务。 BEGI