SQL Server数据库程序设计认证试题Word文件下载.docx
《SQL Server数据库程序设计认证试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《SQL Server数据库程序设计认证试题Word文件下载.docx(91页珍藏版)》请在冰豆网上搜索。
![SQL Server数据库程序设计认证试题Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/23/c4b01f48-42b5-4b93-8eeb-c9e619e71536/c4b01f48-42b5-4b93-8eeb-c9e619e715361.gif)
WHERECategoryID=21
B.SELECTCustomerIDFROMOPENROWSET(‘SQLOLEDB’,‘CORP2’;
‘p*word’,‘SELECT
CustomerIDFROMArchive.dbo.SalesHistoryWHERECategoryID=21’)
C.SELECTCustomerIDFROMCORP2.Archive.dbo.SalesHistory
D.EXECsp_addserver‘CORP2’
C.
SELECTCustomerIDFROMSalesHistoryWHERECategoryID=21,由于表SalesHistory是在远程的CORP2服务器上,并且也已经建立了连接,所以可以直接使用分布式查询。
sp_linkedserver是建立与服务器的连接;
OPENROWSET是一种使用OLEDB连接并访问远程数据的一次性的、特殊的方法,无需设置链接服务器;
sp_addserver定义本地或远程服务器的名称
3.你是一名TreyResearch的数据库开发者,你创建两个事务来帮助将雇员的数据信息写入公司的数据库中。
一个事物将雇员的姓名和地址插入数据库中,这个事务很重要,另外一个事务将雇员的人数统计插入到数据库中,这个事务不那么重要。
在数据库使用的高峰期,在服务器有时遇到错误的期间管理员会通知。
每次发生时,数据库服务器会随机地终止其中一个事务。
你必须确定当服务器终止其中一个事务时,它不会终止比较重要的那个事务。
你应该做什么?
(事务处理)
A.为插入雇员姓名和地址信息的那个事务设置DEADLOCK_PRIORITYtoLOW选项
B.为插入雇员人数信息的那个事务设置DEADLOCK_PRIORITYtoLOW选项
C.为插入雇员姓名和地址信息的那个事务添加一个检查1205服务器错误的条件代码。
如果这个错误被遇到,重新启动该事务。
D.在事务中添加一个ROWLOCK优化提示给SQL数据操作语句。
E.为插入雇员姓名和地址信息的那个事务设置隔离级别给SERIALIZABLE.
B.
Setdeadlock_prioritytolow可以指定当前事务为首选死锁牺牲品;
错误号1205是事务成为死锁牺牲事务被中止后返回的信息,为插入雇员姓名和地址信息的那个事务添加条件代码,比较没有效率
4.你是公司的SQLServer2000在线事务处理数据库的开发者.很多表中有一千甚至更多行。
所有的表都有一聚集索引。
大量地访问表至少要有一个非聚集索引。
在数据库服务器上数据文件将包含有2个RAID阵列。
你想要排列这些表和索引以确保最佳的输入/输出性能。
你在每个RAID阵列上创建一个文件组,你接下来应该做什么?
(文件组管理)
A.把经常连接在一起的表放在同一个文件组中。
把大量访问的表和属于这些表的所有索引放在不同的文件组中。
B.把经常连接在一起的表放在同一个文件组中。
把大量访问的表和属于这些表的非聚集索引放在同一个文件组中。
C.把经常连接在一起的表放在不同的文件组中。
把大量访问的表和属于这些表的非聚集索引放在不同的文件组中。
D.把经常连接在一起的表放在不同的文件组中。
C
为了提高查询效率,将经常查询的表放不同的文件组中,而且将非聚集索引和它的表也放入不同的文件组中。
5.你是公司SQLServer2000数据库的开发者。
你更新了数据库里几个存储过程来创建新的月终销售部门的报表。
此存储过程包括综合查询从三个或者更多的数据表中检索数据。
所有数据库中的表至少有一个索引。
用户反映新的月终报表比前一个版本的报表运
行速度慢很多。
你想改善报表的性能。
你该怎么做?
A.创建一个脚本,包括每个存储过程中的数据定义语言(DataDefinitionLanguage),使用这个脚本作为索引优化向导(IndexTuningWizard)的工作量文件
B.在SQL部署跟踪器中捕获每个存储过程的执行,使用跟踪文件作为索引优化向导(IndexTuningWizard)的工作量文件
C.更新存储过程使用的数据表统计索引
D.在SQL查询分析器中执行每个存储过程,并使用ShowExecutionPlan选项
E.在SQL查询分析器中执行每个存储过程,并使用ShowServerTrace选项
正确答案:
E
"
显示服务器跟踪"
命令提供了对信息的访问,此信息用于确定查询对服务器方的影响。
如果"
命令在执行查询时启用,则该命令显示跟踪窗格,此窗格提供有关事件类、子类、整型数据、文本数据、数据库ID、持续时间、启动时间、读、写以及CPU使用的信息。
可以用来帮助调整查询语句、存储过程和脚本,显示在查询分析器中。
索引优化向导内容参阅联机丛书。
6.你是一家进口商的数据库管理员,你正在创建一个存储订单信息的数据库。
订单将会在一个client/server应用系统中录入,每次一个新的订单录入时,必须分配一个唯一的订单编号,订单编号必须以升序分配。
每天平均有10000个订单被录入。
你创建了一个新的名为Orders的表,并在这个表里添加了一个OrderNumber列。
接下来你该做什么?
(表的属性)
A.设置这个列的数据类型为uniqueidentifier
B.设置这个列的数据类型为int,并为这个列设置IDENTITY属性
C.设置这个列的数据类型为int,创建一个用户定义的方法来选择表中最大的订单编号
D.设置这个列的数据类型为int,创建一个NextKey表,并被这个表添加一个NextOrder列,设置NextOrder列的数据类型为int,创建一个存储过程来检索并更新NextKey中的值
B.
7.你是一个技术培训中心数据库开发者。
通常地,用书面管理雇员的学历、教师、课程和教室安排。
这个培训中心希望通过开发一个数据库录入信息来实现无纸化记录。
你为这个数据库设计表,设计如图
你想缩短查询的响应时间和将数据冗余最小化。
(数据库设计)
A.创建一个名为Instructors的新表。
包含InstructorID、InstructorName、OfficePhone等字段,为添加一个Courses表添加一个名为InstructorID的字段。
B.将Classroom中的所有字段复制到Courses,并删除Classroom表。
C.移除Courses表的主键约束用一个基于CourseID和CourseTitle的主键约束来代替。
D.移除ClassroomID字段,并在ClassroomNumber和ClassTime字段上以主键约束做基础。
8.你设计了一个包含客户订单的数据库。
客户每次下订单时都将订购多种的产品。
你再观察如图所示的数据库设计:
你应该怎么做?
A.创建一个新的名为OrderDetail的订货表,为该表添加OrderID、ProductID、Quantity字段。
B.在Orders表的OrderID、ProductID字段上创建一个混合的主键约束
C.从Orders表中除去ProductID、Quantity这两个字段.
D.在Orders表的OrderID上创建一个唯一约束.
E.将UnitPrice这个字段从Products表移动到Orders表.
A,C.
9.您是一出版社公司的数据库开发者。
你创建以下存储过程来汇报某本书从年初至今的销售情况
CREATEPROCEDUREget_sales_for_title
@titlevarchar(80),@ytd_salesintOUTPUT
AS
SELECT@ytd_sales=ytd_sales
FROMtitles
WHEREtitle=@title
IF@@ROWCOUNT=0
RETURN(-1)
ELSE
RETURN(0)
您创建一个脚本来执行这个存储过程。
如果该存储过程成功执行,它应报道书的销售情况。
如果失败,则将返回如下信息:
“NoSalesFound”
您该怎样创建该脚本?
(存储过程)
A.DECLARE@retvalint
DECLARE@ytdint
EXECget_sales_for_title‘NetEtiquette’,@ytd
IF@retval<
0
PRINT‘Nosalesfound’
PRINT‘Yeartodatesales:
’+STR(@ytd)
B.DECLARE@retvalint
EXECget_sales_for_title‘NetEtiquette’,@ytdOUTPUT
C.DECLARE@retvalint
EXECget_sales_for_title‘NetEtiquette’,@retvalOUTPUT
D.DECLARE@retvalint
EXEC@retval=get_sales_for_title‘NetEtiquette’,@ytdOUTPUT
答案:
D
关键点在于要用变量来接受存储过程执行的结果,通过对结果的判断来确定打印出的信息
10.您是一集装箱制造公司的数据库开发者。
您的公司生产的集装箱是一些不同型号的。
存储集装箱信息的表如下所示有Size、Container和Shape表。
数据存储在表中的示例如图所示
在表中数据存储的实例如图中资料所示,
集装箱的大小定期地改变。
数据库用户经常需要一集装箱的体积。
集装箱的体积是根据shape和size表中的信息计算的。
您要隐藏计算的详细过程,以使体积可以很容易的从对containe表的SELECT语句中得出,你应该做什么?
(存储过程/函数/触发器的不同用法)
A.创建一个以ContainerID为输入参数并且能够返回集装箱的体积的用户自定义函数。
B.创建一个以ContainerID为输入参数并且能够返回集装箱的体积的存储过程.
C.为Container表添加一个名为volume的字段。
创建一个触发器来计算和存储体积当有一个新的集装箱插入表中的时候.
D.给Container表添加一个计算列来计算集装箱的体积。
题意关键在于要在查询语句中实现返回体积的结果,只有函数能在查询语句中使用。
11.你是一医院数据库的开发者,医院一共有26层,每一层有4个存放设备的房间。
你设计一个可处理设备的控制数据库。
某些可处理设备须每次都存储。
当使用设备时,就扫描条形码用来减少数据库里的物品的数量。
供应者应在可用设备数量少于设备房间设置的最小值时被呼叫。
A.创建一个用来更新inventory表的存储过程。
如果结果小于重新储存量,使用xp_logevent存储过程来呼叫。
B.在inventory表上创建一个INSTEADOFUPDATE触发器。
如果inserted表中的数量小于重新储存量,使用SQLAgentMail来发送e-mail信息给管理者
C.在inventory表上创建一个FORUPDATE触发器.如果inserted表中的数量小于重新储存量,使用xp_sendmail系统存储过程来呼叫。
D.设置SQLserver作业每隔4小时运行一次,配置该作业使用the@notify_level_page=2argument.配置该作业让它测试列的大小它将触发供应者被呼叫。
12.您是一数据库的开发者,该数据库用来报告时间。
通常平均每次有5个用户同时访问该数据库,且查询响应时间小于1秒钟。
然而,在星期五下午和星期一早上,当大多数雇员输入他们的时间,该数据库使用率增加到平均每次50个用户。
在这段时间内,查询响应时间增加到平均15到20秒。
您要找到响应速度减慢的原因并解决问题。
(事务和锁的应用)
A.用sp_lock和sp_who系统存储过程找出被锁定的资源和占用锁的进程。
用这些信息来识别和重设引起锁的事务。
B.用系统表sysprocesses和sysobjects找出死锁的资源并确定访问该资源的进程。
C.用系统表sysprocesses找出哪个资源正在被访问。
在所有被访问的表的主键上添加聚集索引。
D.用sp_monitor系统存储过程来确认增加的查询时间影响了哪个进程。
为该进程设置一个限制性较小的事务隔离级别。
影响查询响应速度的原因在于进程所需的资源被锁,sp_lock可以索取锁的信息,sp_who可以列出当前进程信息
13.你是一家保险公司的数据库开发人员,公司有一个多层应用系统用来录入关于公司保险单和保险单所有者的数据。
保险单所有者信息存储在Owners表中,用来创建这个表的脚本如下所示:
CREATETABLEOwners
(
OwnerIDintIDENTITY(1,1)NOTNULL,
FirstNamechar(20)NULL,
LastNamechar(30)NULL,
BirthDatedateNULL,
CONSTRAINTPK_OwnersPRIMARYKEY(OwnerID)
)
当保险单所有者的信息被录入时,如果所有者的出生日期没有被包括进来;
数据库需要
产生一个自定义的错误信息在数据录入系统中显示。
你需要为数据库设计一个方法能够
确认出生日期被提供,并在没有提供出生日期时产生一个错误,你该怎么做?
A.在BirthDate列添加一个CHECK约束
B.创建一个规则,并把这个规则和BirthDate列绑定
C.修改Owners表,使BirthDate列不允许为空
D.为Owners表创建一个触发器,使BirthDate列有效
D.
CHECK约束/规则都无法产生错误的信息项目,只有触发器可以。
14.你是一家大型brewery的数据库开发人员。
每一家工厂和设备的信息存储在一个名为Equipment的数据库中.这工厂的信息存放在一张名为Location的表中,设备的信息存放在一张名为Parts的表中。
用来创建这些表所使用的脚本如下所示:
CREATETABLELocation
LocationIDintNOTNULL,
LocationNamechar(30)NOTNULLUNIQUE,
CONSTRAINTPK_LocationPRIMARYKEY(LocationID)
CREATETABLEParts
PartIDintNOTNULL,
PartNamechar(30)NOTNULL,
CONSTRAINTPK_PartsPRIMARYKEY(PartID),
CONSTRAINTFK_PartsLocationFOREIGNKEY(LocationID)
REFERENCESLocation(LocationID)
Thebrewery可以用来关闭一些现有的工厂和打开一些新的工厂。
当一家工厂被关闭时,有关工厂和所有设备的信息将从数据库中删除。
你创建一个存储过程来完成这个操作。
名为sp_DeleteLocation存储过程如下所示:
CREATEPROCEDUREsp_DeleteLocation@LocNamechar(30)
ASBEGIN
DECLARE@PartIDint
DECLAREcrs_PartsCURSORFOR
SELECTp.PartID
FROMPartsASpINNERJOINLocationAS1
ONp.LocationID=l.LocationID
WHEREl.LocationName=@LocName
OPENcrs_Parts
FETCHNEXTFROMcrs_PartsINTO@PartID
WHILE(@@FETCH_STATUS<
>
-1)
BEGIN
DELETEPartsWHERECURRENTOFcrs_Parts
END
CLOSEcrs_Parts
DEALLOCATEcrs_Parts
DELETELocationWHERELocationName=@LocName
这个存储过程将要花费比想像中还要长的时间来执行。
你需要减少这个存储过程的执行时间,你该怎么做?
(游标的使用)
A.在定义过程中添加WITHRECOMPILE选项.
B.用单一的DELETE语句取代游标操作
C.在过程的开头添加一个BEGINTRAN语句并在过程的结尾添加COMMITTRAN语句
D.为这个过程设置事务处理隔离级别READUNCOMMITTED
E.为Parts表的PartID字段添加一个非聚集索引.
游标操作是在使用查询语句多个结果集中的一个值的时候起作用,它将耗费大量的时间,本题完全可以用两句DELETE语句就将Location表和part表删除。
无需使用游标
15.你是一家保险公司的数据库开发者,公司的保险单信息存储在一个SQLServer2000
数据库中,你使用如下所示的脚本为数据库创建了一个名为Policy的表:
CREATETABLEPolicy
(PolicyNumberintNOTNULLDEFAULT(0),
InsuredLastNamechar(30)NOTNULL,
InsuredFirstNamechar(20)NOTNULL,
InsuredBirthDatedatetimeNOTNULL,
PolicyDatedatetimeNOTNULL,
FaceAmountmoneyNOTNULL,
CONSTRAINTPK_PolicyPRIMARYKEY(PolicyNumber))
每次公司卖出一份新的保险单时,policy表就要增加一条记录,并赋予其一个新的保单号,你将怎么做?
A.创建一个INSTEADOFINSERT触发器来产生一个新的保单号,并把这保单号插入到表中
B.创建一个INSTEADOFUPDATE触发器来产生一个新的保单号,并把这保单号插入到表中
C.创建一个AFTERUPDATE触发器来产生一个新的保单号,并把这保单号插入到表中
D.用AFTERINSERT触发器来代替DEFAULT约束,产生一个新的保单号,并把这保单号插入到表中
A
16.你是一家通讯公司的数据库开发队的一个成员。
在队上的另外一个开发者,Marc,在一个名为Corporate的数据库中创建了一张名为Customers的表。
因为表包含机密的信息,他已经授权允许查询该表的只有队里的其他成员。
你正在开发一个应用程序用来允许销售部门的职员查看Customers表的一些信息。
这些职员是销售数据库角色的所有成员。
为了支持这一个应用程序,你在Customers表上创建一个被命名的vwCustomers的视图。
在创建视图之后,你授权具有销售角色的成员允许查询。
当销售角色的成员尝试从视图中取回数据的时候,他们接收以下错误信息:
SELECTpermissiondeniedonobject‘Customers’,database‘Corporate’,owner‘Marc’.
你必须确定具有销售角色的成员只能使用vwCustomers视图来访问Customers表的数据。
你应该做什么?
(用户角色管理)
A.添加一个销售角色到固定的系统管理员服务器角色中。
B.将vw