SQL Server 2008数据库应用与开发教程(第二版)
DELETE FROM student WHERE sno='20070102'
执行结果如图7-7所示,student表中有一行受影响而sc表中有三行数据受影响。说明设定的触发器被触发,sc表中的相应数据被自动删除。
第十一章习题参考答案
1. 在SQL Server 2005中备份和还原的方法都有哪些?
答:Microsoft SQL Server 2005提供了4种不同的备份方式:完整备份和完整差异备份、部分备份和部分差异备份、事务日志备份、数据库文件和文件组备份。
2. 数据库导入导出的概念和作用是什么?
答:通过导入和导出操作可以在SQL Server 2005和其他异类数据源(例如Excel或Oracle数据库)之间轻松地移动数据。例如,可以将数据从Excel应用程序导出到数据文件,然后将该数据文件导入到SQL Server表中。导出是指将数据从SQL Server表复制到数据文件中。导入是指将数据从数据文件加载到SQL Server表中。
3. 分离和附加数据库时,要注意哪些事项?
答:在进行分离和附加数据库操作时,首先要注意以下几点: (1) 不能进行更新,不能运行任务,用户也不能连接在数据库上。 (2) 在移动数据库之前,为数据库做一个完整的备份。
(3) 确保数据库要移动的目标位置及将来数据增长能有足够的空间。
(4) 分离数据库并没有将其从磁盘上真正的删除。如果需要,可以对数据库的组成文件进行移动、复制或删除。
4. 自动化管理任务的概念。
答:作为SQL Server 2005数据库的管理员,有许多日常工作是相同或相似的,而且需要每天(或每隔一段时间)重复操作。这就使这份工作变得有些枯燥乏味。为了使管理更加方便,SQL Server 2005提供了自动化管理任务的机制,很多具有重复性的工作可以交给SQL Server 2005来自动完成。
第十二章习题参考答案
1. 什么是事务?简述事务ACID原则的含义。
答:事务(TRANSACTION)是由对数据库的若干操作组成的一个逻辑工作单元,这些操作要么都执行,要么都不执行,是一个不可分割的整体。事务用这种方式保证数据满足并发性和完整性的要求。使用事务可以避免发生有的语句被执行,而另外一些语句没有被执行,从而
SQL Server 2008数据库应用与开发教程(第二版)
造成数据不一致的情况。
事务的处理必须满足4原则,即原子性(A)、一致性(C)、隔离性(I)和持久性(D),简称ACID原则:
● 原子性(Atomicity):事务必须是原子工作单元,事务中的操作要么全部执行,要么全
部不执行,不能只完成部分操作。原子性在数据库系统中,由恢复机制来实现; ● 一致性(Consistency):事务开始前,数据库处于一致性的状态;事务结束后,数据库
必须仍处于一致性状态。数据库一致性的定义是由用户负责的,如前面所述的银行转账,用户可以定义转账前后两个账户金额之和应该保持不变;
● 隔离性(Isolation):系统必须保证事务不受其他并发执行事务的影响,即当多个事务
同时运行时,各事务之间相互隔离,不可互相干扰。事务查看数据时所处的状态,要么是另一个并发事务修改它之前的状态,要么是另一个并发事务修改它之后的状态,事务不会查看中间状态的数据。隔离性通过系统的并发控制机制实现; ● 持久性(Durability):一个已完成的事务对数据所做的任何变动在系统中都是永久有效
的,即使该事务产生的修改是不正确,错误也将一直保持。持久性通过恢复机制实现,发生故障时,可以通过日志等手段恢复数据库信息。
2. 为什么要使用锁?SQL Server 2008提供了哪几种锁的模式。
答:在单用户数据库中,由于只有一个用户修改信息,不会产生数据不一致的情况,因此并不需要锁。当允许多个用户同时访问和修改数据时,就需要使用锁来防止对同一个数据的并发修改,避免产生丢失更新、脏读、不可重复读和幻读等问题。
锁(lock)的基本原则是允许一个事务更新数据,当必须回滚所有修改时,能够确信在第一个事务修改完数据之后,没有其他事务在数据上进行过修改。即锁提供了事务的隔离性。 事务一旦获取了锁,则在事务终止之前,将一直持有该锁。如果其他事务尝试访问数据资源的方式与该事务所持有的锁不兼容,则其他事务必须停止执行,直到拥有锁的事务终止、不兼容的锁被释放,才可以使用解锁的数据资源。在SQL Server 2008中,系统能够自动处理锁的行为。
共有6种锁,分别是:共享锁、更新锁、排他锁、意向锁、架构锁和大容量更新锁。
3. 什么是死锁?如何预防死锁?怎么解决死锁?
答:死锁就是两个事务各对一个资源加锁,都想使用对方的资源,但同时又不愿放弃自己的资源,于是一直等待对方放弃资源。如果不进行外部干涉,死锁将一直持续。死锁会造成资源的大量浪费,甚至会使系统崩溃。
解决死锁最好的方法就是防止死锁的发生,即不让满足死锁条件的情况发生。为此,用户需要遵循以下原则:
(1) 尽量避免并发地执行涉及到修改数据的语句;
(2) 要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行;
(3) 预先规定一个加锁顺序。所有的事务,都必须按这个顺序对数据进行加锁。例如,不同
SQL Server 2008数据库应用与开发教程(第二版)
的过程在事务内部对对象的更新执行顺序应尽量保持一致;
(4) 每个事务的执行时间不可太长,尽量缩短事务的逻辑处理过程,及早提交或回滚事务。对程序段长的事务可考虑将其分割为几个事务;
(5) 一般不要修改SQL Server事务的默认级别。不推荐强行加锁。
4. CREATE PARTITION FUNCTION命令的RANGE 子句定义了什么?
答:定义了边界值,一个用于第一个边界值之前的任何值;一个用于第一个和第二个边界值之间的值;一个用于第二个和第三个边界值之间的值;还有一个用于边界值之外的任何值。
5. CREATE PARTITION FUNCTION命令的VALUE 子句定义了什么? 答:values后面为要插入的值。
6. CREATE PARTITION SCHEME命令定义了什么? 答:定义了架构
7. 哪个子句用来分区一个表或索引?
答:利用原表重建分区表。 CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE); ????如果表已创建。用下面子句就可以完成 INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS; ??????
8. 哪3个操作可以用来管理分区,每个操作的目的又是什么?
答:1. 切换分区:使用ALTER TABLE 语句的SWITCH 子句可以将已填充的表或分区与空的表或分区进行交换。
2. 合并分区:使用ALTER PARTITION FUNCTION 语句可以合并分区。执行合并操作时,在该语句中,指定了边界值的分区将被删除,并且该数据合并到相邻的分区中。
3. 拆分分区:拆分分区也使用ALTER PARTITION FUNCTION 语句。拆分分区将创建新分区,并相应的重新分配数据。新的分区创建在基于分区函数的每一个分区方案中指定为下一个文件组的文件组中。
9. 哪个运算符可用来在表之间移动分区? 答:SPLIT运算符
10. SQL Server Integration Services(SSIS)有3种不同类型的控制流组件:容器、_任务_和_优先 约束。
SQL Server 2008数据库应用与开发教程(第二版)
11. SQL Server Integration Services(SSIS)有4种不同类型的数据流组件:提取数据的源、修改和聚合数据的转换、加载数据的目标以及将数据流组件的输出和输入连接为数据流的路径。 12. 简述什么是OLAP。
答:SQL Server 2008分析服务(Microsoft SQLServer Analysis Services,SSAS)是微软SQL Server 2008中的多维联机分析处理(Online Analytical Processing,OLAP)组件,它在商业智能(Business Intelligence,BI)分析方案中集成关系型和OLAP数据。分析服务允许开发人员设计、创建和管理包含从其他数据源(如关系数据库)聚合的数据的多维结构,以实现对OLAP的支持。对于数据挖掘应用程序,分析服务允许开发人员设计、创建和可视化处理那些通过使用行业标准数据挖掘算法,并根据其他数据源构造出来的数据挖掘模型。商业智能(BI)、数据仓库、分析服务的关系。