关系数据库与sql serveer教程课后作业答案,王晴主编 联系客服

发布时间 : 星期一 文章关系数据库与sql serveer教程课后作业答案,王晴主编更新完毕开始阅读07bb39b9fd0a79563c1e727e

答:

两种验证方法的区别如下:

(1)Windows 身份验证:当SQL Server 2000配置成与Windows NT安全性集成时,它就可以利用Windows NT的安全性功能。Windows NT可以授权登录SQL Server,Windows NT用户账户可以映射到SQL Server的登录账户。这使用户不用直接提供单独的登录账户和口令就可以连接和登录SQL Server。用户只要通过了Windows NT的认证,就可以访问SQL Server。

(2)SQL Server身份验证:SQL Server本身也提供了用户登录的安全机制,在这种认证模式下,用户在连接SQL Server时必须提供登录名和登录密码,由SQL Server本身来执行认证处理,与Windows NT的登录账户无关。 两种登录方式的切换步骤如下: (1)打开企业管理器;

(2)在窗口中展开一个服务器组,然后选择该服务组中希望设置身份验证模式的服务器;

(3)在该服务器上单击鼠标右键,在弹出的菜单中选择命令“属性”,打开“SQL Server属性”对话框; (4)该对话框中选择“安全性”选项卡;

(5)在“身份验证”区域中选择要设置的身份验证模式。

① SQL Server和Windows[S]:指定用户可以使用SQL Server身份验证和Windows身份验证,这种验证为混合模式身份验证。

② 仅Windows[W]:指定用户只能通过Windows身份验证连接到SQL Server。 2. 什么是角色?服务器角色和数据库角色的区别是什么? 答:

在SQL Server中,将一些用户集中到一个单元中并对该单元统一设定权限,这样的单元称为角色(role)。 服务器角色主要用于用户登录时授予的在服务器范围内的安全特权。在创建登录账户时,可以对服务器角色进行设置。 数据库角色是用来为某一用户或某一组用户,授予不同级别的管理或访问数据库以及数据库对象的权限,这些权限是数据库专有的,并且还可以使一个用户具有属于同一数据库的多个角色。 3. 结合学生信息管理系统数据库STUMS,在企业管理器窗口中,完成下列各题: ① 创建登录用户user1、user2和super,并创建对应的数据库用户。 答:操作步骤参见13.2和13.3节。

② 给用户user1和user2以及super 授予创建表的权限。 答:GRANT CREATE TABLE TO USER1,USER2,SUPER

③ 给public角色授予DELETE权限(SELECT、DELETE、UPDATE)并将特定的权限授予用户user1、user2和user3,使这些用户对学生基本信息表具有对应权限。 答:GRANT DELETE ON 学生基本信息 TO PUBLIC GRANT DELETE ON 学生基本信息 TO USER1,USER2,SUPER ④ 禁止用户user1、user2不能使用CREATE TABLE语句。 答:DENY CREATE TABLE TO USER1,USER2

⑤ 禁止SUPER用户对教师表的SELECT,INSERT,UPDATE,DELETE的权限。 答:DENY SELECT,INSERT,UPDATE,DELETE ON 教师 TO SUPER ⑥ 撤销用户user1的CREATE TABLE语句权限。 答:REVOKE CREATE TABLE TO USER1 ⑦ 列出用户user1的权限。 答:

操作步骤:在企业管理器中,展开STUMS数据库,在其下属对象中单击“用户”后,在右边的窗格中会出现当前已经存在的用户。用鼠标右键单击要user1数据库用户,在弹出的菜单中选择“所有任务→管理权限”命令,打开“数据库用户属性-STUMS”对话框,在对话框中选择“仅列出此用户具有权限的对象”单选钮,即可查看用户user1的权限。

第14课 事务与锁机制 1.什么是事务?事务有何特性? 答:

SQL Server中的一个事务(Transaction)是由一系列的数据库查询操作和更新操作构成的,把这一系列操作作为单个逻辑工作单元执行。

事务具有4个特性,即原子性、一致性、隔离性和持久性。

(1)原子性:一个事务中的所有操作是一个逻辑上不可分割的单位。 (2)一致性:事务在完成时,必须使所有的数据都保持一致状态。 (3)隔离性:一个事务的执行不能被另一个事务干扰。

(4)持久性:指一个事务一旦提交,则它对数据库中数据的改变就应该是永久的。 2.SQL Server采用哪些机制保证事务物理的完整性? 答:

SQL Server提供以下机制,保证每个事务物理的完整性。 1)锁机制。锁定设备,使事务相互隔离。

2)事务日志。即使服务器硬件、操作系统或 SQL Server 自身出现故障,SQL Server 也可以在重新启动时使用事务日志,将所有未完成的事务自动地回滚到系统出现故障的位置。

3)事务管理。强制保持事务的原子性和一致性。事务启动之后,就必须成功完成,否则 SQL Server 将撤消该事务启动之后对数据所作的所有修改。

3.SQL Server的事务模式有几种?每一种模式有何特点? 答:

SQL Server的事务模式可以分为显式事务、隐性事务与自动提交事务3种模式。

显式事务的特点:显式事务可以显式地在其中定义事务的启动和结束。显式事务也称为用户定义或用户指定的事务。定义显式事务的语句有BEGIN TRANSACTION、COMMIT TRANSACTION、COMMIT WORK、ROLLBACK TRANSACTION 或 ROLLBACK WORK。

隐性事务模式的特点:当连接以隐性事务模式进行操作时, SQL Server将在提交或回滚当前事务后自动启动新事务。无须描述事务的开始,只需提交或回滚每个事务。隐性事务模式生成连续的事务链。

自动提交事务模式的特点:这是SQL Server 默认的事务管理模式,每条单独的语句都是一个事务。也就是说,每个Transact-SQL语句结束时,事务被自动提交,若遇到错误就会回滚。只要自动提交模式没有被显式或隐性事务替代,SQL Server 连接就以该默认模式进行操作。 4.事务的提交和撤销有何意义? 答:

使用COMMIT语句可以提交事务。如果没有遇到错误,可使用该语句成功地结束事务。事务一旦提交,该事务中的所有数据修改在数据库中都将永久有效。事务占用的资源将被释放。

使用ROLLBACK语句可以撤销事务。用来清除遇到错误的事务。一旦撤销事务,该事务修改的所有数据都返回到事务开始时的状态。事务占用的资源将被释放。

5.不当的并发控制将会引起何种数据不一致性?请举例说明。

答:

不当的并发控制将会引起以下四种数据不一致性: 1.丢失更新

当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其他事务的存在。最后的更新将重写由其他事务所做的更新,这将导致数据丢失。

例如,两个编辑人员制作了同一文档的电子副本。每个编辑人员独立地更改其副本,然后保存更改后的副本,这样就覆盖了原始文档。最后保存其更改副本的编辑人员覆盖了第一个编辑人员所做的更改。如果在第一个编辑人员完成之后第二个编辑人员才能进行更改,则可以避免该问题。 2.脏读

未确认的相关性也称脏读,当第二个事务选择其他事务正在更新的行时,会发生未确认的相关性问题。第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。

例如,一个编辑人员正在更改电子文档。在更改过程中,另一个编辑人员复制了该文档(该副本包含目前为止所做的全部更改)并将其分发给预期的用户。此后,第一个编辑人员认为目前所做的更改是错误的,于是删除了所做的编辑并保存了文档。分发给用户的文档包含不再存在的编辑内容,并且这些编辑内容应认为从未存在过。如果在第一个编辑人员确定最终更改前任何人都不能读取更改的文档,则可以避免该问题。 3.不可重复读

当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。不一致的分析与未确认的相关性类似,因为其他事务也是正在更改第二个事务正在读取的数据。然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其他事务更改,因而该行被非重复读取。

例如,一个编辑人员两次读取同一文档,但在两次读取之间,作者重写了该文档。当编辑人员第二次读取文档时,文档已更改。原始读取不可重复。如果只有在作者全部完成编写后编辑人员才可以读取文档,则可以避免该问题。 4.幻象读

当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻象读问题。事务第一次读的行范围显示出其中一行已不复存在于第二次读或生续读中,因为该行已被其他事务删除。同样,由于其他事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。

例如,一个编辑人员更改作者提交的文档,但当生产部门将其更改内容合并到该文档的主副本时,发现作者已将未编辑的新材料添加到该文档中。如果在编辑人员和生产部门完成对原始文档的处理之前,任何人都不能将新材料添加到文档中,则可以避免该问题。 6.什么是共享锁?什么是排它锁? 答:

共享(S)锁允许并发事务读取(SELECT)一个资源。资源上存在共享(S)锁时,任何其他事务都不能修改数据。 排他(X)锁又称互斥锁,可以防止并发事务对资源进行访问。其他事务不能读取或修改排他(X)锁锁定的数据。 7.什么是死锁?如何解除死锁? 答:

死锁是一种可能发生在任何多线程系统中的状态。当某组资源的两个或多个线程之间有循环相关性时,将发生死锁。 在 SQL Server 2000 中,由一个称为锁监视器线程的单独的线程执行死锁检测。它识别线程正在等待的资源。然后,锁监视器查找特定资源的拥有者,并递归地继续执行对那些线程的死锁搜索,直到找到一个循环。用这种方式识别的循环形成一个死锁。

在识别死锁后,SQL Server 通过自动选择可以打破死锁的线程(死锁牺牲品)来结束死锁。 8.锁的状态有几种?分别起什么作用? 答:

SQL Server使用六种不同的锁模式来锁定资源。

1. 共享锁

共享(S)锁允许并发事务读取(SELECT)一个资源。 2.更新锁

更新(U)锁可以防止通常形式的死锁。 3.排他锁

排他(X)锁又称互斥锁,可以防止并发事务对资源进行访问。 4.意向锁

意向锁表示SQL Server需要在层次结构中的某些底层资源上获取共享(S)锁或排他(X)锁。 5.架构锁

用于保护数据库的模式,又称模式锁。 6.大容量更新锁

当将数据大容量复制到表,且指定了TABLOCK提示或者使用sp_tableoption设置了table lock on bulk表选项时,将使用大容量更新(BU)锁。

9.按照题目要求在查询分析器中输入SQL命令,并进行调试:

1)定义一个事务向选课表输入新的数据记录,如果所输入的学号在学生基本信息表中没有,则回滚撤销,否则提交完成。 答: 代码如下: BEGIN TRANSACTION INSERT 选课

VALUES(‘071071001’,’0307’,’80’,’’,’3’)

IF EXISTS(SELECT * FROM 学生基本信息 WHERE 学号=‘071071001’) COMMIT TRANSACTION ELSE

ROLLBACK TRANSACTION

2)修改选课表中的数据,将课程号为“0310”的成绩乘以1.3,为避免脏读,请为选课表加排它锁,直到事务结束。 提示:在更新语句中,加锁的短语为:WITH (锁的类型)。 答:

UPDATE 选课 WITH(TABLOCK HOLDLOCK) SET 成绩=成绩*1.3 WHERE 课程号='0310'

3)使用sp_lock显示SQL Server中当前所有锁的信息。 答:

USE master; GO

EXEC sp_lock; GO