别的可见性支持。
? 提供脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。
2.答
SQL Server支持以下3种游标的实现:
? Transact-SQL 游标。使用Transact-SQL语句创建的游标,主要用在Transact-SQL
脚本、存储过程和触发器中。Transac-SQL游标在服务器上实现并由从客户端发送到服务器的Transact-SQL语句管理。它们还包含在批处理、存储过程或触发器中。 ? 应用编程接口(API)服务器游标。支持OLE DB、ODBC和DB-Library中的API
游标函数。API服务器游标在服务器上实现。每次客户应用程序调用API游标函数时,SQL Server OLE DB提供程序、ODBC驱动程序或DB-Library动态链接库(DLL)就把请求传送到服务器,以便对API服务器游标进行操作。
? 客户端游标。由SQL Server ODBC驱动程序、DB-Library DLL和实现ADO API
的DLL在内部实现。客户端游标通过在客户端高速缓存所有结果集行来实现。每次客户应用程序调用API游标函数时,SQL Server ODBC驱动程序、DB-Library DLL或ADO DLL就对高速缓存在客户端中的结果集行执行游标操作。
由于Transact-SQL游标和API服务器游标都在服务器端实现,它们一起被称为服务器游标。
SQL Server支持4种API服务器游标类型,它们是静态游标、动态游标、只进游标和键集驱动游标。
3.答
首先声明一个游标,然后打开游标,从游标中读取数据,使用游标函数;游标使用完成后,关闭游标;如果不再继续使用,则删除游标。
五、上机练习题
1.答:
USE HrSystem
DECLARE MyCursor1 SCROLL CURSOR
FOR SELECT * FROM Employees where wage>3000 OPEN Mycursor1
FETCH FIRST FROM Mycursor1 FETCH LAST FROM Mycursor1
2.答: (1)
USE HrSystem
DECLARE MyCursor2 CURSOR STATIC FOR SELECT * FROM Employees OPEN MyCursor2 SELECT @@CURSOR_ROWS
(2)
USE HrSystem
DECLARE MyCursor3 CURSOR KEYSET FOR
21
SELECT * FROM Employees OPEN MyCursor3 SELECT @@CURSOR_ROWS
(3)
USE HrSystem
DECLARE MyCursor4 CURSOR DYNAMIC FOR SELECT * FROM Employees OPEN MyCursor4 SELECT @@CURSOR_ROWS
3.答:
USE HrSystem
DECLARE MyCursor5 SCROLL CURSOR
FOR SELECT * FROM Employees WHERE Sex='男' OPEN MyCursor5
FETCH NEXT FROM MyCursor5 WHILE @@FETCH_STATUS = 0 FETCH NEXT FROM MyCursor5 CLOSE MyCursor5 DEALLOCATE MyCursor5
第10章 维护数据库
一、填空题
1.数据库快照 2.“稀疏文件”
3.AS SNAPSHOT OF
4.FROM DATABASE_SNAPSHOT 5.DROP DATABASE
6.物理设备名称;逻辑设备名称
7. sp_addumpdevice;sp_dropdevice 8. 差异
9. WITH NORECOVERY;WITH RECOVERY 10. REPLACE
二、选择题
1.A 2.D 3.C 4三、判断题
1.A 2.A 3.A 4四、问答题
1.答
22
.D 5.A
.A 5.B
数据库快照是数据库的只读、静态视图,数据库可以有多个快照。创建快照时,每个数据库快照在事务上与源数据库一致。在被数据库所有者显式删除之前,快照始终存在。
可以在报表中使用数据库快照。另外,当数据库出现用户错误,还可将数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更新的数据。数据库快照必须与数据库在同一服务器实例上。
数据库快照是在数据页级运行的。也就是说,创建数据库快照后,对源数据库页的修改之前,源数据库页中的数据将复制到快照中。快照是一个很形象的名词,在你移动之前按下快门,复制了你当时的形象。
为了存储快照中复制的源数据库页,SQL Server 2008使用了“稀疏文件”。稀疏文件是NTFS文件系统的一项功能。将数据写入稀疏文件后,NTFS将分配磁盘空间以保存该数据。稀疏文件最初是空白文件,不包含用户数据,而且操作系统也没有为其分配存储用户数据的磁盘空间。在创建数据库快照后,SQL Server将对源数据库的修改都保存在稀疏文件中,随着对源数据库页的不断修改,稀疏文件也变得越来越大。
2.答
执行恢复到数据库快照的操作时,应该注意以下几点: ? 在执行恢复操作之前,应该关闭其他所有与目标数据库的连接。例如,在SQL Server
Management Studio中与当前数据库有连接的其他窗口。 ? 建议对数据库先进行备份操作。 ? 删除关于此数据库的其他快照。
? 在创建数据库快照后数据库发生的变化在恢复操作完成后将丢失。
3.答:
SQL Server提供了以下4种不同的数据库备份方式。 (1)完整数据库备份
完整备份指对整个数据库进行备份,包括数据和事务日志。当数据库发生故障时,可以完整地恢复数据库中的数据。对于小型数据库而言,使用完整备份是最佳的选择。但如果数据库中的数据量很大,执行完整备份会花费很多的时间,而且会占用大量的存储空间。因此,对于大型数据库而言,一般都会使用差异备份的方法进行补充。 (2)差异数据库备份 顾名思义,差异数据库备份并不对数据库执行完整的备份,它只是对上次备份数据库后所发生变化的部分进行备份。差异数据库备份需要有一个参照的基准,即上一次执行的完整数据库备份。差异数据库备份的速度比较快,在还原差异数据库备份时,需要首先还原基准数据库备份,然后在此基础上再还原差异的部分。 (3)事务日志备份
事务日志包含了自上次进行完整数据库备份、差异数据库备份或事务日志备份以来所完成的事务。可以使用事务日志备份将数据库恢复到特定的即时点或恢复到故障点。 (4)数据库文件和文件组备份
只备份特定的数据库文件或文件组,常用于超大型数据库的备份。
五、上机练习题
5.答: (3)
23
BACKUP DATABASE mydb1 TO mycopy1
(4)
RESTORE DATABASE mydb3 FROM mycopy1 WITH
MOVE 'f1'
TO 'd:\\sql_data\\mydb3-f1.mdf', MOVE 'f2'
TO 'd:\\sql_data\\mydb3-f2.mdf', MOVE 'f3'
TO 'd:\\sql_data\\mydb3-f3.mdf', MOVE 'lg1'
TO 'd:\\sql_log\\mydb3-lg1.lgf'
(5)
DROP DATABASE mydb2,mydb3
第11章 SQL Server安全管理
一、填空题
1.SQL Server登录;数据库用户;权限;角色 2.Windows 身份验证模式;混合模式 3.sp_grantdbaccess 4.DROP USER 5.Public
6.对象权限;语句权限;暗示性权限 7.sp_addrole;sp_droprole
二、选择题
1.D 2.C 3.D 4.C 5.A 6.A 7.B 8.C
三、判断题
1.B 2.A 3.A 4.A
四、问答题
1.答
SQL Server的安全管理模型中包括SQL Server登录、数据库用户、权限和角色4个主要方面,具体说明如下:
(1)SQL Server登录 要想连接到SQL Server服务器实例,必须拥有相应的登录账户和密码。身份认证系统验证用户是否拥有有效的登录账户和密码,从而决定是否允许该用户
24
连接到指定的SQL Server服务器实例。
(2)数据库用户 通过身份认证后,用户可以连接到SQL Server服务器实例。但是,这并不意味着该用户可以访问到指定服务器上的所有数据库。在每个SQL Server数据库中,都存在一组SQL Server用户账户。登录账户要访问指定数据库,就要将自身映射到数据库的一个用户账户上,从而获得访问数据库的权限。一个登录账户可以对应多个用户账户。
(3)权限 权限是规定了用户在指定数据库中所能进行的操作。
(4)角色 类似于Windows的用户组,角色可以对用户进行分组管理。可以对角色赋予数据库访问权限,此权限将应用于角色中的每一个用户。
2.答
SQL Server提供以下两种身份验证模式: ? Windows 身份验证模式 当用户通过Windows NT 4.0、Windows 2000或Windows 2003用户账户进行连接时,SQL Server通过回叫Windows系统以获得信息,重新验证账户名和密码。
SQL Server通过使用网络用户的安全特性控制登录访问,以实现与Windows的登录安全集成。用户的网络安全特性在网络登录时建立,并通过Windows域控制器进行验证。当网络用户尝试连接时,SQL Server使用基于Windows的功能确定经过验证的网络用户名。SQL Server于是验证此人是否是如其所说的那个人,然后只基于网络用户名允许或拒绝登录访问,而不要求单独的登录名和密码。
? 混合模式(Windows身份验证和SQL Server身份验证)
SQL Server可以设置SQL Server登录账户。用户登录时,SQL Server将对用户名和密码进行验证。如果SQL Server未设置登录账户或密码不正确,则身份验证将失败,而且用户将收到错误信息。
应用程序开发人员和数据库用户也许更喜欢“SQL Server身份验证”模式,因为他们可以通过对登录账户和密码的管理实现权限控制。
SQL Server的身份验证模式下图所示。
25