70228 SQL Server课后练习答案.docx
《70228 SQL Server课后练习答案.docx》由会员分享,可在线阅读,更多相关《70228 SQL Server课后练习答案.docx(18页珍藏版)》请在冰豆网上搜索。
70228SQLServer课后练习答案
第一章
习题解答
1.用户已经在SQLServer内为Windows2000组创建了新登录帐户,为了让该组的成员能够使用SQLServer,用户还必须执行哪些安全配置任务?
答:
用户必须将Windows2000用户组添加到需要访问的数据库中,并授予用户访问某些对象的权限。
2.如果用户希望查看SQLServer数据库中的对象的元数据,那么应当采取何种方法?
答:
用户可以使用一下三种方法:
查询信息架构视图,执行系统存储过程或使用某些系统函数。
此外,用户也可以直接查询系统表,但由于系统表可能会随以后版本升级而发生变化,所以不推荐使用这种方法。
3.用户希望访问驻留在同一服务器中不同数据库的两2个表,例如,用户希望从inventory数据库中访问Sales数据库中的表,那么用户如何利用查询语句来访问Sales数据库中的表?
答:
用户应当使用完全限定名称来访问Sales数据库表。
例如,用户可以指定Sales.dbo.tablename或Sales..tablename。
第二章
实验解答
练习A3配置SQLServer代理和SQLServer企业管理器
如何判断是否已启动SQLServer?
答:
SQLServer旁的绿色箭头指示着它已启动。
使用何种身份验证连接到SQLServer?
答:
Windows身份验证。
练习A4创建共享注册信息
有已注册的SQLServer实例吗?
为什么?
答:
没有已注册的实例。
清空“与用户无关的读取/存储”复选框时,显示共享注册信息。
在创建共享注册信息之前,不存在任何共享信息。
在SQLServer企业管理器中查看到的之前的信息是私有信息。
练习A5安装问题的疑难解答
什么导致生成了该文件中所有项?
答:
启动SQLServer。
Windows2000应用程序日志中是否包含作为SQLServer的安装或者启动结果的内容?
答:
Windows2000应用程序日志中有许多和SQLServer及SQLServer代理服务的启动相关的项,这些项关联到SQLServer和SQLServer代理错误日志中的项。
练习A6创建数据库关系图
价格最高的产品是什么?
其价格为多少?
答:
CôtedeBlaye,263.5
习题解答
4.如果用户在多台不同计算机中安装了SQLServer,并希望各台计算机中的SQLServer服务和SQLServer代理服务能够通过信任连接进行相互通信,并且还能够访问其他网络资源。
请问:
这两种服务应当运行在哪种安全上下文中?
为什么?
答:
为了能够使用可信连接,SQLServer和SQLServerAgent服务必须运行在域用户登录帐户的安全上下文中。
如果这两种服务运行本地系统安全上下文中。
两者都不能建立可信连接。
如果准备连接其他网络资源,这两种服务必须能够建立可信连接。
5.如果用户希望能够利用SQLServer企业管理器管理远程计算机中运行的SQLServer命名实例,请问:
为了能够注册并管理远程计算机中的SQLServer,用户需要具备哪些条件?
答:
用户或者已经知道远程计算机中运行SQLServer的实例名和服务器名,或者能够通过浏览的方式来知道它们。
其次,用户必须能够作为角色sysadmin的成员建立与远程计算机的连接。
6.在以默认设置安装SQLServer之后,如果用户希望增加数据库,而该数据库又需要使用非默认Windows排序规则的字符集。
请问:
为了支持新字符集,用户需要采取哪些措施?
答:
用户可以选择一下两种措施之一:
利用其他排序规则安装独立的SQLServer实例;为此数据库指定非默认的排序规则
第三章
习题解答
7.如果用户所创建的数据库更新频率不高,且主要用于决策支持和查询密集型业务,那么用户应当为事务日志分配多少百分比的数据库空间?
答:
因为数据库很少执行插入,更新或删除等动作,所以可以考虑将事务日志空间的默认百分比25%减少到10%,这种百分比并非通过精确计算而得,而是估计出来的。
实际大小应当根据具体环境特性来选择,诸如数据库大小、相关事务大小和所用的恢复模型。
8.用户自定义文件组的优势是什么?
其主要劣势是什么?
答:
其优势在于:
用户可以将表分别存储到单个磁盘中,不仅减轻了磁盘争用现象,还简化了备份策略;其主要劣势在于:
这种方法增加了管理活动的复杂性。
9.使用RAID技术的优势是什么?
答:
通过将数据分散到多个驱动器中,RAID技术能够改进性能并提供容错能力,此外,这种方法比用户自定义文件组更容易管理。
第四章
实验解答
练习A2授权用户访问SQLServer
但没有授权david的Windows2000登录帐户使用SQLServer,那他是如何连接到数据库的?
答:
david是Windows2000中的customer_mgmt组成员,而customer_mgmt组已经授权使用SQLServer。
当max登录SQLServer时,发生了什么?
为什么?
答:
拒绝max对SQLServer的访问。
他是有效的Windows2000用户,但是没有授权使用SQLServer,并且不属于已授权访问SQLServer的Windows2000组。
练习A3废除、拒绝Windows2000用户或组的访问
从SQLServer中删除组后,作为组成员的Windows2000用户可以访问SQLServer吗?
答:
如果Windows2000用户已通过Windows2000用户帐户授权对SQLServer访问,或属于另一个已授权访问的组,他们仍然可以访问SQLServer。
paul可以访问SQLServer吗?
答:
不可以。
已指定拒绝他的Windows2000登录帐户对SQLServer访问。
现在假定NWTraders\paul是另一个已授权访问SQLServer的Windows2000组成员,那么paul可以访问SQLServer吗?
答:
不可以。
他的Windows2000登录帐户已指定拒绝对SQLServer访问,即使在另一已授权访问组中的成员身份也不能使他访问SQLServer。
练习B2分配语句权限
你可以创建视图吗?
答:
可以,因为已经授权kathy创建视图的权限。
这个语句成功地执行了吗?
为什么?
答:
CREATETABLE语句失败是因为没有授予她执行语句的语句权限。
练习B3分配对象权限
carl能查询哪些表?
不能查询哪些表?
为什么?
答:
他可以查询Customers和Categories表,有访问Customers表的权限因为是cust_mgmt角色成员,可以查询Categories表因为它已授予给public角色。
不能查询Employees和Products表因为这些表的权限已从public角色中取消,而他自己的帐户或所属的任何角色没有任何权限。
kathy可以访问该表吗?
为什么?
答:
不可以。
即使kathy是已授予该表上权限的cust_mgmt角色的成员,但是她自己的SQLServer帐户已被拒绝访问。
练习C1创建和激活应用程序角色
你可以查询该表吗?
为什么?
答:
可以,您可以查询该表是因为carl具有与order_entry角色的权限。
应用程序角色是独占的;carl直接具有的或作为其它角色(除了public)成员而具有的其它任何权限都将被忽略。
例如,carl可以通过使用cust_mgmt角色中的成员身份在Customers表上进行任何操作,但是这些权限在激活了应用程序角色后就被忽略。
order_entry角色能够为carl激活多长时间?
答:
order_entry应用程序角色保持激活直到会话(连接)关闭。
练习C2通过视图和存储过程实现权限
你能查询该视图吗?
为什么?
答:
可以,即使carl不具有基本表上的权限,您也可以查询该视图,这是因为carl使用public角色的成员身份具有从该视图选择的权限。
你能执行该存储过程吗?
为什么能或为什么不能?
答:
可以,即使carl不具有基本表上的权限,您也可以执行该存储过程,这是因为carl使用public角色的成员身份具有执行存储过程的权限。
你能查询这个表吗?
为什么?
答:
不可以。
carl仅有使用允许他使用employees_view视图和employee_proc存储过程的权限。
SELECT权限已指定从public角色取消了。
习题解答
1.如果环境中存在从UNIX到Windows2000连接的用户,那么应该选择哪种身份验证模式?
答:
因为混合模式既支持Windows2000身份验证,又支持SQLServer身份验证,所以应当使用混合模式。
2.用户应当在什么时候直接为SQLServer用户帐户分配权限?
答:
当用户帐户所映射的Windows2000组需要某种通用权限的时候,应当直接为这个用户帐户分配权限。
3.如果给某用户授予更新表的权限,但该用户所属角色又拒绝了此权限,那么该用户帐户是否保留更新表的权限?
答:
该用户不再保留更新表的权限。
因为拒绝权限将使授予给他的权限失效
第五章
实验解答
练习A2使用SQL邮件
查询结果是什么呢?
答:
77
练习B2使用创建作业向导
选中“显示步骤细节”复选框后,在作业历史中会显示什么信息呢?
清除这一选项时,又将显示什么信息呢?
答:
“显示步骤详细细节”选中,将提供每个作业步骤和作业结果的信息(错误消息及通知)。
清除该选项时,仅显示作业结果。
练习B3创建包含多个作业步骤的作业
在历史中注意到了什么呢?
答:
作业在第一步作业步骤失败后失败。
依据重试间隔作业又重新执行了一次。
错误消息陈述为无法打开bcp主机数据文件。
日志中显示了什么信息呢?
答:
SQLServer代理是事件源,事件类别是作业引擎。
描述包括了作业名、调用该作业的用户,作业失败消息、和运行的最后一步的步骤编号。
在输出文件里显示了什么呢?
答:
SQLState错误编号,本地错误编号,和错误消息“不能打开BCP主机数据文件”。
练习C2使用用户定义错误消息创建警报
是否收到响应该警报已定义的通知了吗?
答:
是的。
已收到netsend命令和电子邮件消息。
练习C3创建性能条件警报
存在什么调度?
答:
存在两个计划。
其一为每四小时重复运行一次的计划,其二为响应于性能条件警报NorthwindLog60%Full而运行的计划。
练习C4指派防故障操作员
Northwind数据库的事务日志填满后会发生什么事呢?
答:
引发错误9002后,该脚本文件停止执行。
引发Northwind9002FullLog警报,BackupNorthwindLog作业响应该警报而执行,这个作业用于备份事务日志。
自己作为防故障操作员,通过电子邮件和netsend命令通知。
该警报已发生几次?
最后一次发生的日期和时间是什么?
答:
该警报应该已发生一次。
日期和时间会有变更。
如何将这条消息和其他警报系统消息区分开来?
答:
主题行中首部指定[防故障]
打开事件查看器,查看应用程序日志。
列出与该错误和失败的呼叫通知相关的事件。
答:
错误消息:
“数据库'Northwind'的日志文件已满。
需备份该数据库的事务日志,以释放一些日志空间。
”
警告消息:
“负责警报'Northwind9002LogFull'的一个呼叫操作员当前不当值班,因此不能呼叫。
习题解答
10.如果用户希望备份产品数据库的事务日志,在事务高峰期(从上午8:
00至下午6:
00)每隔1小时备份数据库事务日志,并且在非高峰期(从下午6:
00至上午8:
00)每隔3小时执行备份。
为了自动化这些任务,哪种方法最有效?
答:
创建一个备份此事务日志的作业,并且指定两种调度计划
11.当客户信贷限额更改(增加或减少)的时候,需要通知客户帐户管理员;此外,客户帐户管理员还希望知道更新客户帐户的客户代理人名称以及更改帐户的原因备注。
你如何完成这项任务?
答:
第一步,创建自定义的客户错误消息,其中能够指定客户帐户名、信贷限额、备注(假定数据库中存在此列),以及更改客户帐户的客户代理人的名称;
第二步,修改负责更改客户信贷限额的存储过程或触发器,使其能够利用RAISERROR语句触发自定义的错误;
第三步,把客户帐户管理员创建为操作员;
最后,为自定义错误信息创建警报,当触发警报时,能够向客户帐户管理员发送电子邮件。
第六章
实验解答
“Nwstripe1”和“Nwstripe2”备份文件中包含了什么?
答:
“Nwstripe1”的内容是“族1”,“媒体1”。
“Nwstripe2”的内容是“族2”,“媒体1”。
习题解答
12.用户数据库包括5GB数据,存储于单个数据库文件中。
此数据库充当邮购订货公司的订货接收系统,操作员每天24小时接收订单。
通常情况下,该公司每天接收大约12000份订单。
请为这个数据库选择适当的备份计划。
答:
当数据库处于联机状态的时候,SQLServer能够进行数据库备份。
但是用户应该避免在数据库活动高峰期进行备份调度。
因为数据库存在于单个数据库文件中,所以不能分散备份数据库的各个部分,而必须将整个数据库作为一个整体备份。
用户可以考虑一种包括由完全数据库备份和事务日志备份的备份计划,随着日订货量的增加,用户还可以增加差异备份。
在系统出现故障的时候,差异备份能缩短恢复所需的时间。
13.用户数据库包括由气象卫星收集的图像数据,并且这些数据不断地进行更新。
数据库大小为700GB,并且被划分到3个文件中保存。
如果准备对其进行完全数据库备份,那么将耗时20个小时。
请问:
如何才能尽量缩短每天执行备份所需的时间,并且在系统出现故障的情况下,仍然能够保证较好的数据还原能力呢?
答:
用户可以选用一种以完全数据库备份开始的备份计划。
由于完全数据库备份比较费时,所以极少进行这种备份,而是以轮流方式每天只备份数据库文件中的一个。
为了尽量缩短还原时间,除了备份事务日志以外,用户还应当执行差异备份。
14.假定用户通常对数据库只执行完全数据库备份,并且事务日志与数据文件存放在不同的物理磁盘中,虽然允许事务日志保存数据库的更改信息,但是需要对其进行定期清理。
如果包含数据文件的磁盘受到破坏,那么在更换物理磁盘后,用户应当如何尽量减少数据丢失呢?
答:
通过利用带有NO_TRUNCATE选项的BACKUPLOG语句,用户尽量备份未受破坏的事务日志。
这种方法能够捕获自最近一次完全数据库备份以来的某些数据库活动。
在恢复数据库之后,应用先前所保护下来的事务日志来还原数据库。
15.将差异备份作为备份策略的一部分,其优缺点是什么?
答:
差异备份能够节省恢复过程所需的时间。
只需要恢复完全备份和最近一次的差异备份,用户就能还原数据库。
为了使数据库保持一致,用户不必应用所有的事务日志或先前的差异备份。
虽然差异备份有以上优点,但它也存在一定的缺陷。
例如,因为差异备份不捕获数据库的更改,所以用户无法利用它从某个即时点来恢复数据库。
为了能够执行即时点还原,用户就必须使用事务日志备份。
此外,随着最近一次完全数据库备份与差异备份之间的时间不断增加,与先前创建的差异备份的大小相比,晚建的差异备份将会很大。
第七章
实验解答
练习A2模拟和捕获数据库活动
出现的错误信息应该会说明NWCopy_Data.mdf文件找不到并且该设备无法打开,应该怎么做才能够还原并恢复NWCOPY数据库?
答:
如果可能,用NOTRUNCATE选项备份损坏数据库的事务处理日志,捕获在日志中最近的活动。
决定可用并且有用的备份。
还原完全数据库备份。
还原最近的差异备份。
其中将包含在第一个事务处理日志备份中的更改。
还原最近一组事务处理日志备份并恢复数据库。
练习A3还原完全数据库、差异和事务日志备份
NWC3设备包含了什么?
答:
NWC3设备包含一个完全数据库备份。
日期和时间说明它在NWCHANGE设备上的备份之前创建。
NWCHANGE设备包含了什么?
答:
NWCHANGE设备包含两个事务处理日志备份,以及一个差异备份。
时间戳记显示首先创建一个事务处理日志备份,然后创建一个差异备份和另一个事务处理日志备份。
你认为应该还原所选的备份吗?
答:
是的。
没有必要还原第一个事务处理日志备份。
为什么没有选择第一个备份的事务日志?
答:
此事务处理日志备份中记录的更改在差异备份中有所反应。
3个新客户都恢复了吗?
答:
没有,只有HealthFoodStore和VolcanoCoffeeCompany所对应的行在数据库中。
这些行记录在差异备份中。
WineCellar所对应的行记录在最近的事务处理日志备份中,它没有被还原。
所有3个客户都恢复了吗?
答:
是的。
习题解答
16.什么是自动恢复进程,它何时启动?
答:
重新启动时SQLServer将会出现自动恢复进程.在系统出现故障的时候,它可以前滚或回滚事务日志来维护数据库的完整性。
17.在还原数据库之前,应采取哪些步骤?
答:
首先将数据库访问权限授予db_owner、dbcreator或sysadmin角色成员;随后再备份事务日志,以便在还原操作完成的时候应用它。
18.假定存在一个完全数据库备份和几个事务日志备份,而数据库又分散储存在4个文件中,其中第三个文件所驻留的磁盘出现故障,请问应当如何恢复并还原该数据库?
答:
首先将数据库访问权限局限于db_owner、dbcreator或sysadmin角色成员;随后在备份事务日志,以便在恢复操作完成的时候应用它。
替换或恢复磁盘媒体,以完全数据库备份作为开始来恢复第三个备份文件,恢复除最后一个事务日志备份以外的全部备份,并且指定NORECOVERY选项。
最后,恢复最后一个事务日志并指定RECOVERY选项。
19.假定数据库设置为完全还原模式,并且用户具有一个完全数据库备份和几个事务日志备份。
在上午9:
21的时候,数据库遭到恶意的破坏。
现在的时间是9:
30,请问如何才能将数据库恢复并还原到某个一致性状态?
答:
首先备份事务日志,并且将数据库访问权限限于db_owner、dbcreator或sysadmin角色成员。
指定RECOVERY选项来恢复数据库,应用除最后一个事务日志备份以外的全部备份,并且指定NORECOVERY选项。
最后,恢复最后一个事务日志并指定[RECOVERY,STOPAT=’month,xx,year,time’],其中time表示上午9:
20。
20.在上面4.所述的场景中,会有因为恢复过程而丢失的任何更改吗?
答:
如果上午9:
20和9:
30之间存在任何活动,那么相应的更改将会丢失。
第八章
实验解答
练习A1 使用Windows系统监视器
你观察到了什么趋势?
答:
观察会有所变化。
高速缓存命中率保持较高。
Indexsearches/sec较高,发生完全扫描。
批处理请求数量会增加然后稳定。
使用的日志百分比会缓慢增加。
你观察到了什么趋势?
答:
观察会有所变化。
Memory:
Pagefaults/sec计数器保持较高,然而,Memory:
Pages/sec计数器保持较低。
虽然Windows在进行页面调度,但是很多数据已经在主内存中(备用队列中),不需要从磁盘读入。
SQLServer实例的Process:
Pagefaultspersec计数器较低,指示SQLServer正在执行较少的页面调度。
SQLServer实例的Process:
%Processortime计数器指示SQLServer只在使用全部处理器时间的一部分。
练习A2 使用SQL事件探查器
探查器中记录了什么信息?
答:
loria和sa失败登录尝试,因为它们没有与SQLServer信任连接相关联。
探查器中记录了什么信息?
答:
到所有与从SQL查询分析器建立连接相关的事件。
要注意,SQL查询分析器提交几个查询作为启动过程的一部分。
它使用了建立会话和导入用户界面所需的信息。
练习A3 使用SQL查询分析器
处理该查询要使用多少表扫描和索引?
怎样来提高性能?
答:
为了连结products、orderdetails、customers和orders表,该查询需要四次表扫描。
不使用索引。
创建合适的索引将可能提高该查询的性能。
处理该查询要使用多少表扫描和索引?
怎样来提高性能?
答:
为了连结products、orderdetails、customers和orders表,该查询需要四次索引扫描。
不使用表扫描。
使用索引可以提高性能,但并不总是这样。
练习A4 监视锁定信息
该SPID持有的是什么类型的锁?
答:
数据库锁和表锁。
每个锁的资源锁模式是什么?
答:
数据库锁是共享模式,表锁是意向共享模式。
与该进程和该锁相关的用户登录名是什么?
答:
SQLAdminx
该SPID在NorthwindCopy数据库中持有的是什么类型的锁?
答:
数据库锁、页锁、表锁和行锁。
每个锁的资源锁模式是什么?
答:
数据库锁是共享模式。
有两个表锁。
NorthwindCopy数据库中的表锁是意向排它模式。
主数据库中的表锁是意向共享模式。
页锁是意向排它模式。
行锁是排它模式。
查询完成了吗?
答:
没有,查询在等待。
连接3的SPID在等待资源吗?
答:
是的,它在等待在更新行上授权的行锁。
为什么连接3不能完成查询?
答:
更新的行被连接2排它地锁定。
“当前活动”窗口显示连接3的SPID被连接2阻塞,连接2在阻塞。
习题解答
21.用户抱怨每天下午2:
00的时候服务器特别慢,请问怎样找出导致这种情况的原因?
答:
首先,用户需要确定故障是由于系统整体上的负荷,还是单独SQLServer上的负荷所导致的。
为了达到这种目的,通过使用Windows系统监视器,用户可以将Windows和SQLServer的资源使用情况进行比较。
如果故障是由于SQLServer活动所导致的,那么就可以利用SQL事件探查器创建跟踪来记录每天下午2:
00左右所发生的活动。
这种跟踪应当查看有可能增加服务器负载的事件,诸如用户连接、Transact-SQL语句、存储过程或使用temp数据库等等。
用户应当考虑按照持续时间、用户或应用等方面对这些信息进行分组。
通过上述信息,用户能够确定哪种事件在系统占的负荷最大。
22.如果要找出特定SQLServer表所持有的锁,请问用户应当采取什么样的工具?
答:
对于表,用户可以考虑使用以下三种工具:
SQL事件探查器;系统存储过程sp_lock和sp_who;SQLServer企业管理器中的当前活动窗口。
第九章
实验解答
练习1从查询导入数据
为什么在执行DTS包时会在“删除表结果”这一步中收到错误信息?
答:
创建DTS包时,指定了导入数据前要删除并重新创建目的表。
若目的表不存在,就会收到错误,指示不