sql 70-229 考试样题(2)
转:
71.你是Trey Research一个数据库的开发者。你正在设计一个SQL Server 2000
数据库,该数据库将被很多公司用来发布复制。你在一个包含有机密信息的数据库中创建了一些存储过程。你想要阻止公司来查看这些机密信息。
你该怎么做?
A.从系统表syscomments中删除存储过程中的文本。
B.对存储过程的文本加密
C.在系统表syscomments否认public角色中的SELECT权限
D.在系统表sysobjects否认public角色中的SELECT权限
答案: B.
72.你是Southridge Video.(公司名)一个数据库开发者。公司将销售信息存放在SQL
Server 2000 数据库中。你被叫从数据库中删除超过5年的订购记录。为了删除记录,你在SQL查询分析器中执行下面的语句:
DELETE FROM Orders WHERE OrderDate < (DATEADD (year, -5, getdate()))
当接收到下面消息后你关闭SQL查询分析器
(29979 row(s) affected)
你检查表发现旧的记录仍然存在表中。当前的连接属性显示如下:
你该怎么做?
A.删除表中与Order表相关联的记录。
B.使得Order表中的触发起不可用。
C.执行一条关闭隐性事务(SET IMPLICIT_TRANSACTIONS OFF)语句
D.执行SET CURSOR_CLOSE_ON_COMMIT ON语句
E.更改DELETE语句的逻辑
答案: C
73.你是一家电话销售公司的一个数据库开发者。你要设计一个名为customercontacts的数据库。这个数据库将被频繁的更新。这个数据库将有1G的大小。你要让数据库达到最好的性能。你的C:\ 盘有5GB的空间。你将用以下哪一语句来创建数据库?
A. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 10,
MAXSIZE = 1GB
FILEGROWTH= 5)
B. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 10,
MAXSIZE = 1GB
FILEGROWTH= 10%)
C. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 100,
MAXSIZE = UNLIMITED)
D. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 1GB)
答案: D.
74.你为一家名为woodgrove 的银行开发数据库。该公司在一个SQL Server 2000数据库中存储它的销售数据。你要在这个数据库中创建一个索引视图。为了达到该目的,你要执行如下脚本:
Set NUMERIC_ROUNDABORT OFF
GO
CREATE VIEW Sales
AS
SELECT SUM(UnitPrice*Quantity*(1.00-Discount))AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM dbo.OrderDetails AS OD JOIN dbo.Orders AS O
ON OD.OrderID = O.OrderID
GROUP BY O.OrderDate, OD.ProductID
GO
CREATE UNIQUE CLUSTERED INDEX IX_Sales ON Sales (OrderDate,
ProductID)
索引创建失败,并接收到一个错误信息。你要排除错误来创建索引。
问你要怎么做?
A.为视图增加一个order by 子句。
B.为视图增加一个having子句。
C.选择NUMERIC_ROUNDABORT 选项。
D.改变索引为唯一的、非聚集索引
E.为视图增加WITH SCHEMABINDING选项
答案: E.
SCHEMABINDING将视图绑定到架构上。指定 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (owner.object)。
75.你是一个SQL Server 2000 数据库的数据库开发者。另一个名为Andrea的数据库开发者需要修改数据库里的现在视图。然而,你要阻止她检视和替换表里的某些数据。现在,Andrea只有公共数据库的角色。你要怎么做?
A. 把 Andrea添加到 db_owner 数据库角色中.
B. 把 Andrea添加到db_ddladmin数据库角色中.
C.授权给 Andrea 创建视图的权限.
D. 授权给 Andrea 更新视图的权限.
E. 授权给 Andrea 在表中 REFERENCES的权限..
答案: B.
76.你是一家迅速发展的公司的一名数据库开发者。这家公司每个月都要扩充新的销售领域。当每个新的销售领域被增加里,就会有一个或更多的销售伙伴被分配到这个新的地区。销售数据将被插入到一个名为RegionSales的表里,它属于Corporate数据库。RegionSales 表如下所示:
每一个销售伙伴都只能查看和修改RefionSales表里各自地区的信息。要尽可能简单的扩展新的领域和增加销售伙伴。你要怎么做?
A.使用grant、revoke和deny语句来给销售伙伴分配权限。
B.使用企业管理器为RegionSales表分配权限。
C.为每个销售地区创建一张关于RegionSales表的视图,授于销售伙伴访问各自销售地区的视图的权限。
D.创建一个名为Security的新表来包含销售伙伴和销售地区领域的信息。创建一个存储过程,通过和Security表比较来审核用户的合法性,决定允许或不允许修改RegionSales表里的数据。
E.创建一个名为Security的新表来控制销售伙伴和销售领域的结合。创建一个自定义函数用于允许或不允许修改RegionSales表里的数据。授于所有的销售伙伴执行该自定义函数的权限
答案: D
77.你是一家玩具公司的数据库开发者。Marie是另一名开发者,她创建了一张名为ToySales的表。Marie和你都不是系统固定的服务器角色,但你们两个的数据库角色都是db_owner。ToySales表存储公司所有部门的销售信息。该表设置如下:
你以vwDollSales登入到数据库中并创建了一张只显示ToySales表中的dolls的销售信息的视图。在dolls部门的雇员被授于完全访问数。你也创建了一张名为vwActionFigureSales的视图,该视图只显示销售数据。在运算数据部门的雇员被授于完全访问彼此间的数据。这两个部门当前没有访问数据的权力。在数据部门的雇员与dolls数据库角色相关联。运算数据部门的雇员与ActionFigure数据库角色相关联。你要保证两个部门都只能查询各自的数据。你必须执行哪三个步骤?(每一个正确答案是解决方法的一部分,选3个)
A. 把表和视图的所有权转让给数据库所有者。
B. 授予你的登录用户SELECT ToySales表的权限。
C. 授予Doll数据库角色SELECT vwDollSales 视图的权限。
D. 授予ActionFigure数据库角色SELECT vwActionFigureSales 视图的权限。
E. 拒绝Doll数据库角色SELECT ToySales表的权限。
F. 拒绝ActuibFigure数据库角色SELECT ToySales表的权限。
答案: A, C, D.
78.你是一个SQL Server 2000 数据库的数据库开发者。该数据库安装在 Microsoft Windows 2000 Server computer 上。 数据库使用默认配置,数据库中所有的表至少要有一个索引。SQL Server是服务器上唯一一个运行的应用程序。一天中数据库的活动高峰期是在销售代表输入和更新销售处理事务时。批量报告在营业时间后被执行。销售代表报告说更新和插入处理太缓慢。
你要怎么做?
A. 在SQL Server上运行系统监视器:在一天中访问计数器的方法. 使用从系统监视器的输出来识别哪些表需要索引.
B. 使用sp_configure 系统存储过程来增加由SQL Server使用的锁的数量。
C.在一天内运行SQL Profiler。选择SQL:BatchCompleted 和 RPC:Completed 事件和 EventClass 和 TextData 数据列.使用一个SQL事件查看器输出文件作为索引向导的输入文件。
D. 增加 min server memory 选项的有效值。
E.重建索引,把填充因子设为100.
答案: C.
79.你是一个船舶公司的数据库开发者。你有一个SQL Server 2000数据库用于存储订货信息。这个数据库包括有order表和orderdetails表.存储该数据库的计算机有4个9GB的磁盘可用于数据存储。计算机有两个磁盘控制器。每一个磁盘控制器控制两个磁盘。Order表orderdetails 表经常被访问。你需要调节数据库的性能。你该怎么做?(每一个正确答案为解决方法的一部分。选2项)
A.为每一个磁盘创建一个文件组。
B.在一个单独的文件组里为order表创建一个聚集索引与非聚集索引分开。
C.在一个文件组存储orderdetail表的数据和聚集索引,并在另一个文件组里创建非聚集索引。
D.在一个文件组里创建order表和有关order表的索引,在另一个文件组里创建orderdetail 表和有关orderdetail表的索引。
E.创始两个文件组,每一个都有两个磁盘并与同一个控制器联系。
答案:D、E
80.你是一个brokerage公司的数据库开发者。这个数据库包括一张名为Trades的表。如下是用于创建该表的脚本:
CREATE TABLE Trades
(
TradeID int IDENTITY(1,1)PRIMARY KEY NONCLUSTERED NOT NULL,
TradeDate datetime NULL,
SettlementDate datetime NULL,
Units decimal(18, 4) NULL,
Symbol char(5) NULL,
ClientID int NULL,
BrokerID int NULL
)
GO
CREATE CLUSTERED INDEX c_symbol ON Trades (Symbol)
在一天内trades表被频繁的插入和更新。每天晚上都要汇报有关该表的运行。
你在查询分析器里执行如下语句:
DBCC SHOWCONTIG (Trades)
执行后在出现如下结果:
DBCC SHOWCONTIG scanning ‘Trades’ table. . . . .
Table: ‘Trades’(1621580815); index ID:1, database ID:12
Table level scan performed.
-Pages Scanned-----------------------------------------:104
-Extents Scanned---------------------------------------:16
-Extent Switches----------------------------------------:24
-Avg. Pages per Extent-------------------------------:6.5
-Scan Density[Best Count:Actual Count]-----------:52.00%[13:25]
-Logical Scan Fragmentation-------------------------:7.69%
-Extent Scan Fragmentation---------------------------:43.75%
-Avg. Bytes Free per page-----------------------------:460.1
-Avg. Page Density (full)------------------------------:94.32%
DBCC execution completed. If DBCC printed error messages, contact
your system
你要确保在trades表里可任意的进行插入和查询操作。你要怎么做?
A. Execute the DBCC DBREINDEX statement on the table.
B. Execute the UPDATE STATISTICS statement on the table.
C. Execute the DROP STATISTICS statement on the clustered index.
D. Execute the DBCC INDEXDEFRAG statement on the primary key index.
E. Execute the DROP INDEX and CREATE INDEX statements on the primary key index.
答案:A
81.你是一个名为INVENTORY的数据库的开发者。你有一张你创建的报告清单。这些报告将同时被运行。你写出查询语句来创建每个报告。在查询语句的基础上,你设计和创建这个数据库表的索引。 你想要确定你已经创建了有效的索引,你得怎么做?
A 创建一个SQL 事件探查器跟踪,使用OBJECT事件分类。
B依靠包含有在报告中有使用的查询的一个工作量文件来运行索引调整向导。
C运行系统监视器,并且使用SQLSERVER:ACCESS METHODS 计算器
D在查询分析器里执行这些表的查询,并且使用SHOWPLAY-TEXT OPTION。
答案:B
82.你是你公司的SQL SERVER 2000 DB 的数据库开发者。你使用下面的脚本来创建一个名为EMPLOYEE 的视图:
create view emplyee as
select p.ssn,p.lastname,p.firstname,p.address,p.city,p.state,p.birthdate,e.employeeid,e.department,e.salay
from person as p join employees as e on(p.ssn=e.ssn)
这个视图将被一个应用程序使用,这个应用程序是用来向PERSON和EMPLOYEES这两个表里插入记录的。用来创建这些表格的脚本如下所示:
create table person
(ssn char(11) not null primary key,
lastname varchar(50) not null,
firstname varchar(50) not null,
address varchar(100) not null,
city varchar(50) not null,
state char(2) not null,
birthdate datetime not null)
go
create table employees
(employeeid int not null primary key,
ssn char (11) unique not null,
department varchar(10) not null,
salary money not null,
constraint fkempper foreign key(ssn) references person (ssn))
你想要使这个应用程序能够防止视图来发布INSERT语句,你得怎么做?
A 在视图上创建一个AFTER触发器
B 在视图上创建一个INSTEAD OF 触发器
C 在PERSON和EMPLOYEES表上创建一个INSTEAD OF 触发器
D 把视图修改成带有WITH CHECK 选项
E 把视图修改成带有WITH SCHEMABINDING 选项
答案:B
83.你是大世界进口商的一个数据库开发者。你正在为公司的SQL SERVER2000 DB创建一个名为ORDERS的表。每一个订单包含ORDERID,ORDERDATE,CUSTOMERID,SHIPPERID,SHIPDATE.当订单要输入时,带有订单的客户服务代表得输入ORDERDATE,CUSTOMERID和SHIPPERID。ORDERID由数据库自动生成,并且一定是唯一的。订单只能从存在的客户那里得到。SHIPPERS只能从一个存在的SHIPPERS集中选择。在客户服务代表完成订单后,这个订单被送到装运部门进行最后的处理。当订单被装运后,装运部门就输入SHIP DATE。
下面哪一个语句可以用来创建ORDERS表?
A. CREATE TABLE Orders
(
OrderID uniqueidentifier PRIMARY KEY NOT NULL,
OrderDate datetime NULL,
CustomerID char(5) NOT NULL FOREIGN KEY
REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY
REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
B. CREATE TABLE Orders
(
OrderID int identity (1, 1) PRIMARY KEY NOT NULL,
OrderDate datetime NOT NULL,
CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
C. CREATE TABLE Orders
(
OrderID int identity (1, 1) PRIMARY KEY NOT NULL,
OrderDate datetime NULL,
CustomerID char(5) NOT NULL FOREIGN KEY
REFERENCES Customer (Customer ID),
ShipperID int NULL,
ShipDate datetime Null
)
D. CREATE TABLE Orders
(
OrderID uniqueidentifier PRIMARY KEY NOT NULL,
OrderDate datetime NOT NULL,
CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
答案:B
84.你是LUCERNE 出版社的数据库开发者。公司把数据存放在SQL SERVER 2000里。这个数据库包含一个名为ORDERS的表。当前,这个表上有一个聚集索引,这个索引是由客户名和当前日期生成的。当前,ORDERS表有750000行,并且行数每周增加5%。公司计划下周开展促销活动,那样ORDERS表的行插入量将会增长50%。你要在促销期间优化ORDERS表的插入,你得怎么做?
A 每天晚上创建一个作业来重新组建聚集索引,并且使用FILLFACTOR默认。
B 给ORDERS表增加另外的索引。
C 垂直分割ORDERS表。
D 重建聚集索引,使用FILLFACTOR OF 50
E 在ORDERS表上执行更新统计(UPDATE STATISTICS)
答案:D
85.你正在设计你公司的SALES数据库。这个数据库将由三个客户应用程序使用。需要访问这个数据库的用户当前MICROSOFT WINDOWS 2000 的用户组。用户根据他们的数据库访问需求存放在WINDOWS 2000组中。客户端应用程序通过每一个应用程序各自的应用程序角色连接SALES数据库。每一个应用程序角色都分配一个密码。所有的用户都只能通过客户应用程序来访问SALES数据库。数据库没有授给任何的许可。你要怎么做?
A 给每一个WINDOWS2000组分配适当的许可。
B 给每一个应用程序角色分配适当的许可。
C 把WINDOWS 2000组成员分配给合适的的应用程序角色。
D 给应用程序角色提供带有密码的用户。
答案:B
86.你是你公司INSURANCE数据库的开发者。你在SQL查询分析器里执行以下的脚本来检索代理表和保险单信息:
SELECT A.LastName, A.FirstName, A.CompanyName, P.PolicyNumber
FROM Policy AS P JOIN AgentPolicy AS AP
ON (P.PolicyNumber = AP.PolicyNumber)
JOIN Agents AS A ON (A.AgentID= AP.AgentID)
生成的查询执行计划如下所示:
Table ScanScan rows from a tablePhysical operation: Table ScanLogical operation: Table ScanRow count: 6,969Estlmated row slze: 105I/O cost: 0.00139CPU cost: 0.00773Number of executes: 1Cost: 0.157175(12%)Subtree cost: 0.157Estimated row count: 6,969Argument:OBJECT:([Insurance].[dbo].[Agents])
当你把光标指向扫描表的图标时,你得到的信息如下所示:
你想要提高这个查询的性能。你得怎么做?
A 改变FROM子句中表的次序,把AGENT表放在最前面
B 查询中使用HASH JOIN 来连接AGENTS表
C 用AGENTS 表中的AGENTID列创建一个聚集索引。
D用AGENTS 表中的AGENTID列创建一个非集索引。
答案:C
87.你是一个数据库顾问。你的一个客户报告说SQL Server 2000 的查询反应时间缓慢,特别是需要表连接的时候。哪些步骤你要执行来分析这个性能问题?
答案: Step 1 Use SQL Profiler to create a trace based on the SQL Profiler Tuning Template
Step 2 Specify that the trace data be saved to a file, and specify a maximum file size.
Step 3 Specify a stop time for the trace.
Step 4 Run the trace.
Step 5 Use the trace file as an input to the Index Tuning Wizard.
Step 6 Replay the trace, and examine the output.
Step 7 (none)
88.你是一个为WINGTIP TOYS的数据库开发者。这个公司把销售信息存放在SQL SERVER 2000 DB里。这个数据库包含一个名叫ORDERS表。你想要把旧的数据从ORDERS表移到一个档案表。在执行这个处理前,你想要确定优化查询是怎样处理插入语句的。
你在SQL查询分析器里执行以下的语句:
SET SHOWPLAN_TEXT ON
GO
CREATE TABLE Archived_Orders_1995_1999
(
OrderID int,
CustomerID char (5),
EmployeeID int,
OrderDate datetime,
ShippedDate datetime
)
INSERT INTO Archived_Orders_1995_1999
SELECT OrderID, CustomerID, EmployeeID, OrderDate, ShippedDate
FROM SalesOrders
WHERE ShippedDate < DATEADD (year, -1, getdate())
你得到如下的错误信息:
Invalid object name ‘Archived_Orders_1995_1999’.
你要解决这个问题,要怎么做?
A 把CHIVED_ORDERS_1995_1999表命名为所有者名字
B 请求CREATE TABLE 许可
C 在你执行SET SHOWPLAN_TEXT ON 语句前,创建ARCHIVE_ORDERS_1995_1999 表
D 把表名改成ARCHIVEDORDERS
答案:C
SET SHOWPLAN_TEXT
使 Microsoft® SQL Server™ 不执行 Transact-SQL 语句。相反,SQL Server 返回有关如何执行语句的详细信息。
当 SET SHOWPLAN_TEXT 为 ON 时,SQL Server 返回各个 Transact-SQL 语句的执行信息但不执行语句
89.你是Woodgrove银行的数据库开发者.公司有一个包含人力资源信息的数据库.你正在设计事务以支持数据进入数据库.你设计的两个事务的脚本如下:
Transaction1 Transaction2
BEGIN TRANSACTIONUPDATE CustomerSET CustomerName=@NameWHERECustomerID=@CustIDUPDATE CustomerPhoneSET PhoneNumber=@PhoneWHERECustomerID=@CustIDAND PhoneType=@PTypeCOMMIT TRANSACTION BEGIN TRANSACTIONUPDATE CustomerPhone SETPhoneNumber=@PhoneWHERE CustomerID=@CustIDAND PhoneType = @PTypeUPDATE CustomerAddress SET Street =@StreetWHERE CustomerID=@CustIDAND AddressType=@ATypeUPDATE Customer SET CustomerName =@NameWHERE CustomerID = @CustIDCOMMIT TRANSACTION
当你检测这些脚本时,你发现数据库服务器偶尔探测到一个死锁请况.你该怎么办?
A. 在第二个事务中,把update customer 语句放在update customerphone语句之前
B. 增加一个 SET DEADLOCK_PRIORITY LOW 语句到两个事务上。
D. 增加一个 SET LOCK_TIMEOUT 0语句到两个事务上。
答案: A.
90.你是一个公司的数据库开发者,该公司为棒球队编辑统计数据.这些统计数字被储存在Statistics数据库中.每个队的队员被登记在Statistics数据库的表Rosters中.创建表Rosters的脚本如下所示:
CREATE TABLE Rosters(RosterID int NOT NULL,TeamID int NOT NULL,FirstName char (20) NOT NULL,LastName char (20) NOT NULL,CONSTRAINT PK_Rosters PRIMARY KEY (RosterID),CONSTRAINT FK_TeamRoster FOREIGN KEY (TeamID)REFERENCES Team (TeamID))
在表Rosters中每个棒球队一次最多有24个队员,你需要保证球队人数不超过该最大值.
你该怎么办?
A.在表Rosters中创建触发器验证该数字.
B.创建一种角色来验证该数字。
C. 创建一个包含WITH CHECK OPTION字句的 UPDATE 视图。
D.在 Rosters 表上添加一个CHECK约束来验证该数字。
答案: A.
91.你是一家咨询公司的数据库开发者.你创建一个名为reporting的数据库.顾客姓名和id来自于其他两个名为training和consulting的数据库,而且要导入reporting数据库.
你在reporting数据库中创建一个customers表.创建脚本如下所示:
CREATE TABLE Customers(CustomerKey int NOT NULL,SourceID int NOT NULL,CustomerName varchar(100) NOT NULL,CONSTRAINT PRIMARY KEY PK_Customers (CustomerKey))
数据必须从training数据库中的students表和consulting数据库中的clients表传到customers表.students表和clients表如下所示:
你必须创建一个传输数据到customers表的脚本.该脚本的第一部分如下所示:
SCRIPT:
CREATE TABLE #tmpCustomers(CustomerID int IDENTITY(1, 1) NOT NULL,SourceID int NOT NULL,CustomerName varchar(100) NOT NULL,CONSTRAINT PRIMARY KEY PK_tmpCustomers (CustomerID))INSERT INTO #tmpCustomers (SourceID, CustomerName)SELECT StudentID, StudentName FROM Training.dbo.StudentsIF @@ERROR <> 0 RETURNINSERT INTO #tmpCustomers (SourceID, CustomerName)SELECT ClientID, ClientName FROM Consulting.dbo.ClientsIF @@ERROR <> 0 RETURN
为完成脚本,选择需要的脚本并排列顺序.
SELECT AND PLACE
答案:
92.你是一个投资经纪公司的数据库开发者.公司有一个stocks数据库,包含currentprice和pastprice表.投资股票当前的价格被储存在currentprice表.先前的股票价格被储存在pastprice表.这些表如下所示:
表包含的数据如下所示:
currentprice表中的所有行在营业日结束时被更新,即使股票价格自从上一次更新以来没有改变(也要更新).如果股票价格从上一次更新以来已经改变,那么必须在pastprice表中插入一行.
你必须为数据库设计一个方法自动执行这个动作.你该怎么办?
A.在currentprice表中创建一个after触发器,用来比较在inserted和deleted表中stockprice列的值.如果值不一样,那么触发器将插入一行到pastprice表中.
B.在currentprice表中创建一个after触发器, 用来比较在inserted和CurrentPrice表中stockprice列的值。如果值不一样,那么触发器将插入一行到pastprice表中.
C.在CurrentPrice表上创建一个级联更新约束来更新PastPrice表中的行。
D.创建一个存储过程用来比较表CurrentPrice上StockPrice字段的新旧值 。如果值不一样,那么过程将插入一行到pastprice表中.
答案: A.
93.你是Wingtip Toys的数据库开发者.公司在sqlserver 2000数据库中跟踪它的存货.你有几个查询和储存过程,储存过程执行在数据库索引上以支持已创建的查询.当编制的存货项目增加时,一些存储过程的执行时间明显增加.其他访问同样信息的查询和储存过程并没有增加.你必须恢复运行慢的储存过程的性能,达到原先执行的时间.你该怎么办?
A. 总是使用 WITH RECOMPILE 选项去执行运行慢的存储过程。
B. 为每张表中运行慢的存储过程执行UPDATE STATISTICS语句。
C. 为每一个运行慢的存储过程执行sp_recompile系统储存过程.
D. 为每张表中运行慢的存储过程执行DBCC REINDEX语句。
答案: C.
94.你是一个行销公司的数据库开发者.你设计了一个每季的销售视图.这个视图加入了几个表和计算合计信息.你在视图上创建了一个唯一的索引.你想提供一个参数查询去访问包含在你的索引视图中的数据.输出必须用在其他的select 列中.
你如何完成这个目标?
A. 使用 ALTER VIEW语句 添加参数值到视图的定义中。
B.创建一个存储过程接收输入参数并且返回结果集。
C.创建一个用户自定义标量函数接收输入参数。
D.创建一个联机用户自定义函数接收输入参数
答案: C.
95.你正在为一个大型的食品连锁店做设计.部分数据库计划如下所示.
用来创建customers表的脚本如下所示.
商店经理想跟踪顾客人口,以便给顾客提供广告和促销优惠卷.这些广告和促销将基于现存顾客过去的购买情况.广告和促销将通过一个或更多的人口资料来锁定购买方式,这些人口资料有:性别,年龄,邮编号码和地区.大部分的促销将基于性别和年龄.将用查询来检索顾客人口统计信息.你想查询反应时间尽可能快.你该怎么办?
A. 为Customers 表的PostalCode、 State和 DateOfBirth列添加索引。
B. 不规范化custmoers表
C. 在Customers、 SalesLineItem、 State,和 Product表上创建一个视图。
D. 创建一个函数用来返回Customers表上所需要的数据。
答案: B.
96.你是一个Lucerne Publishing的数据库开发者. 你要设计一个人力资源数据库,该库包含employee和salary表.
你和用户面谈并且发现下面这些信息:
employee表将经常通过employeeid列和salary表连接
employee表上的个人记录将通过社会安全号码(ssn)来选择
将创建一列雇员.他们先以last name 的字母顺序排序,在以first name的字母顺序排序
你需要为表设计索引,同时优化索引性能.
你应该采用哪3个脚本?
A. CREATE CLUSTERED INDEX [IX_EmployeeName] ON [dbo].[Employee] ([LastName],[FirstName])
B. CREATE INDEX [IX_EmployeeFirstName] ON [dbo].[Employee] ([First Name])
CREATE INDEX [IX_EmployeeLastName] ON [dbo].[Employee] ([Last Name])
C. CREATE UNIQUE INDEX [IX_EmployeeEmployeeID] ON [dbo].[Employee] ([EmployeeID])
D. CREATE UNIQUE INDEX [IX_EmployeeSSN] ON [dbo].[Employee] ([SSN])
E. CREATE CLUSTERED INDEX [IX_EmployeeEmployeeID] ON [dbo].[Employee]([EmployeeID])
F. CREATE CLUSTERED INDEX [IX_EmployeeSSN] ON [dbo].[Employee] ([SSN])
答案: A, C, D.
97.你是一个大型电子功能公司的数据库开发者.公司划分成许多的部门,而且公司的每一个雇员都分配到某个部门. 你创建一个employee表,包含所有雇员的信息,也包含他们所属的部门。创建employee的脚本如下所示:
CREATE TABLE Employee(EmployeeID uniqueidentifier NOT NULL,FirstName char (20) NOT NULL,LastName char (25) NOT NULL,DepartmentID int NOT NULL,Salary money NOT NULL,CONSTRAINT PK_Employee PRIMARY KEY (EmployeeID))
每个部门经理应该只能看到属于他部门的雇员的信息。你应该怎么办?
A. 使用授予、拒绝、废除语句为每个部门经理分派权限。
B. 为每个部门经理添加一个数据库注册到 db_datareader 固定数据库角色中。
C. 在employee表,建立表和视图,强制水平级别安全
D. 在 Employee表上使用SQL Server Enterprise Manager来分派权限。
答案: C.
98.你是你公司人力资源数据库的数据库开发者。该数据库包含employee表,表含有秘密的ID号和薪水。这个表也包含非秘密的信息,如雇员姓名和地址。
你必须在employee表建立所有非秘密信息,用于以XML格式给一个外部应用程序使用。这个外部应用程序应该能够具体化XML数据的精确格式。你也必须对这个外部应用程序隐藏现存的秘密信息。
你应该怎么做?
A.创建一个从Employee表返回非秘密信息的存储过程,用XML来格式化。
B创建一个从Employee表返回非秘密信息的用户自定义函数,用XML来格式化。
C. 从employee表创建视图,仅包含非秘密的信息。给予它外部操作的权限来阻止视图的提交查询。
D. 在Employee表上设置 column-level 权限来阻止外部操作查看秘密的字段。
给予它外部操作的权限来阻止视图的提交查询。
答案: C.
99.你是一个Tailspin Toys的数据库开发者。你有两个SQL Server 2000计算机,名为CORP1和CORP2。这两台计算机使用SQL Server 2000验证方式。CORP2存储来自于CORP1的数据。每个月末,数据从CORP1移除并传到CORP2.你正在设计季报告,包含来自于CORP1和CORP2的数据。你想要分布式查询尽快的查询。你应该采取哪3个步骤?
A. 创建一个储存过程,使用OPENROWSET语句来检索数据
B. 创建一个储存过程,使用完全表名在CORP2检索数据
C. 创建一个脚本,使用OPENQUERY语句来检索数据
D. 在CORP1执行sp_addlinkedserver系统存储过程
E. 在CORP1执行sp_addlinkedsrvlogin系统存储过程
F. 在CORP2执行sp_serveroption系统存储过程并且把collation compatible设置为ON.
答案: B, D, E.
100.你是一个IT咨询公司的数据库开发者。你正在设计一个数据库来存储在位顾问的信息。你在数据库中创建了一个CandidateSkills表。表如图所示:
你应该怎么样唯一识别每个顾问的技能?
A. 在CandidateID列上创建主键
B. 在CandidateID和DateLastUsed列上创建主键
C. 在CandidateID 和 SkillID列上创建主键
D. 在CandidateID 、SkillID和DateLastUsed列上创建主键
答案: C.
101.你是Proseware公司的数据库开发者。你为公司的人力资源部。该数据库储存雇员信息。你创建了一个EmployeeContact表包含下面的列:HomePhone, BusinessPhone, FaxNumber, and EmailAddress你必须保证每个记录包含一个值,或者HomePhone列或者BusinessPhone列,你应该怎么做?
A.创建一个禁止空值的角色.将该角色赋予HomePhone 和BusinessPhone列
B. 创建一种用来阻止在HomePhone和BusinessPhone列中输入空值的角色.将该角色赋予表。
C. 在HomePhone 和 BusinessPhone列中添加check 约束用来阻止空值的输入。
D. 添加check 约束,验证HomePhone和BusinessPhone列至少有一列不为空
答案: D.
102.你为Contoso公司设计一个库存和商品买卖数据库。你创建了逻辑数据库如图所示:
你必须保证维护数据库的参照完整性。哪3个类型的约束应该应用于设计?
A. 在Products表上创建外键约束,指向OrderDetails表
B. 在Products表上创建外键约束,指向Suppliers表
C. 在Order表上创建外键约束,指向OrderDetails表
D. 在OrderDetails表上创建外键约束,指向Order表
E. 在OrderDetails表上创建外键约束,指向Products表
F. 在Suppliers表上创建外键约束,指向Products表
答案: B, D, E.
103.你是SQL Server2000数据库的开发者。你为销售部门创建了一个存储过程,生成EndOfMonthSales报告。
你利用下面的语句为EndOfMonthSales报告分配权限
GRANT EXECUTE ON EndOfMonthSales TO SalesDept
Andrea加入了销售部门并且成为SalesDept角色成员。Andrea也是Marketing角色成员,该角色已经被拒绝访问EndOfMonthSales报告。
Andrea不能执行存储过程。其他销售部门的雇员没有碰到该问题。
你该怎么办?
A.添加 Andrea 到db_datareader 数据库角色中.授予 REFERENCES权限到 public 角色中.
B.从Marketing角色中删除Andrea。
C.在已经引用存储过程的表上授予 Andrea’s数据库用户账户选择的权限.
D.在已经引用存储过程的表上授予 Andrea’s数据库用户账户REFERENCES的权限.
答案: B.
104.你是一个大型旅游公司的数据库开发者.你在resvervation数据库中被授予CREATE VIEW的权限.你的同事Eric被授予CREATE TABLE的权限.你们俩都没有数据库拥有者或者系统权限,也没有被添加到任何固定服务器角色中.Eric已经创建了Traveler表并且存有公司顾客的信息.表如下所示:旅行代理处要连接数据库浏览存储在该表的信息.对应旅行代理处的登录被分配到Agent数据库角色中.你想旅行代理处能够浏览Traveler表中姓名和地址两列信息,而不是六列信息.你应该采取哪3个步骤?
A.授予agent角色对Traveler 表有选择的权限
B.叫Eric授予agent角色在Traveler表上有选择的权限.
C.叫Eric授予你Traveler表中需要的列的select权限.
D.叫Eric创建一个名为vwTravelers的视图,并以所希望的格式显示数据
E.创建一个视图vwTravelers,并以所希望的格式显示数据
F.授予agent角色对视图vwTravelers有选择的权限
答案: C, E, F.
105.你是一个食物批发商的数据库开发者.每星期,公司完成不同顾客的订单.通常,每个顾客每星期定购同样数量的一定项目.偶尔,顾客定购的某个项目的数量明显少于顾客通常的数量.订单的信息储存在表invoice中,该表在sqlserver2000数据库中.创建该表的脚本如图所示:
EXHIBIT
CREATE TABLE Invoice(InvoiceID int NOT NULL,InvoiceNumber char(10) NOT NULL,CustomerName char(30) NOT NULL,InvoiceAmount money NOT NULL DEFAULT (0),CONSTRAINT PK_Invoice PRIMARY KEY (InvoiceID))
你想验证这些和平常不一样的订单的样品,为此,你必须为每个顾客生成一列货物,货物数量少于该顾客平均的货物数量.你应该用哪个查询?
A. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1, Invoice AS i2
GROUP BY i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
HAVING i1.InvoiceAmount < AVG (i2.InvoiceAmount)
ORDER BY i1.CustomerName, i1.InvoiceNumber
B. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1
WHERE i1.InvoiceAmount <
(SELECT AVG (i2.InvoiceAmount)
FROM Invoice AS i2
WHERE i2.CustomerName=i1.CustomerName)
ORDER BY i1.CustomerName, i1.InvoiceNumber
C. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1
WHERE i1.InvoiceAmount <
(SELECT AVG (i2.InvoiceAmount)
FROM Invoice AS i2)
ORDER BY i1.CustomerName, i1.InvoiceNumber
D. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount,
CASE WHEN i1.InvoiceAmount < AVG (i2.InvoiceAmount)
THEN i1.InvoiceAmount ELSE 0 END
FROM Invoice As i1 INNER JOIN Invoice AS i2
ON i1.CustomerName = i2.CustomerName
GROUP BY i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
ORDER BY i1.CustomerName, i1.InvoiceNumber
答案: B.
106.你是Contoso公司的数据库开发者.公司在SQL Server2000中储存它的销售数据.数据库包含一个表customers,它有500,000行.用来创建表customers的脚本如图所示:
CREATE TABLE Customers(CustomerID int IDENTITY NOT NULL,CompanyName varchar(40) NOT NULL,ContactName varchar(30) NULL,ContactTitle varchar(30) NULL,Address varchar(60) NULL,City varchar(15) NULL,Region varchar(15) NULL,PostalCode varchar(10) NULL,Country varchar(15) NULL,Phone varchar(24) NULL,Fax varchar(24) NULL,CONSTRAINT PK_Customers PRIMARY KEY CLUSTERED (CustomerID))
许多重要的查询在该表上执行,该查询选择基于城市和地区列的顾客信息.非常少的顾客住在同样的城市,但许多处于同样的地区.你应该怎样来优化这些查询的性能?
A.在Customers表上创建一个视图.
B.为Customers表创建一个返回数据的函数.
C.在city和region列上创建一个复合的非集聚索引,并且city作为第一列.
D.在City和Region 列上创建一个复合的非聚集索引并且把 Region作为第一列.
E. 把City 和Region列添加到聚集索引中并把 Region 作为第一列
答案: C.
107.你是一个SQL Server2000数据库的开发者.数据库默认配置.在过去的一个月访问数据库的用户从100增加到1000.用户通知你他们频繁地收到错误的信息.下面是一个收到错误信息的例子:
Transaction (Process ID 56) was deadlocked on [lock] resources with another
process and has been chosen as the deadlock victim. Rerun the transaction.
你应该怎么办?
A.在数据库中为事件使用更高的事务隔离级别.
B.使用SQL Profiler捕获死锁事件
C.使用系统监视器来监视锁的请求和死锁.
D. 执行 sp_configure系统存储过程来增加允许同时连接SQL server.的用户数量
答案:B
71.你是Trey Research一个数据库的开发者。你正在设计一个SQL Server 2000
数据库,该数据库将被很多公司用来发布复制。你在一个包含有机密信息的数据库中创建了一些存储过程。你想要阻止公司来查看这些机密信息。
你该怎么做?
A.从系统表syscomments中删除存储过程中的文本。
B.对存储过程的文本加密
C.在系统表syscomments否认public角色中的SELECT权限
D.在系统表sysobjects否认public角色中的SELECT权限
答案: B.
72.你是Southridge Video.(公司名)一个数据库开发者。公司将销售信息存放在SQL
Server 2000 数据库中。你被叫从数据库中删除超过5年的订购记录。为了删除记录,你在SQL查询分析器中执行下面的语句:
DELETE FROM Orders WHERE OrderDate < (DATEADD (year, -5, getdate()))
当接收到下面消息后你关闭SQL查询分析器
(29979 row(s) affected)
你检查表发现旧的记录仍然存在表中。当前的连接属性显示如下:
你该怎么做?
A.删除表中与Order表相关联的记录。
B.使得Order表中的触发起不可用。
C.执行一条关闭隐性事务(SET IMPLICIT_TRANSACTIONS OFF)语句
D.执行SET CURSOR_CLOSE_ON_COMMIT ON语句
E.更改DELETE语句的逻辑
答案: C
73.你是一家电话销售公司的一个数据库开发者。你要设计一个名为customercontacts的数据库。这个数据库将被频繁的更新。这个数据库将有1G的大小。你要让数据库达到最好的性能。你的C:\ 盘有5GB的空间。你将用以下哪一语句来创建数据库?
A. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 10,
MAXSIZE = 1GB
FILEGROWTH= 5)
B. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 10,
MAXSIZE = 1GB
FILEGROWTH= 10%)
C. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 100,
MAXSIZE = UNLIMITED)
D. CREATE DATABASE CustomerContacts
ON
(NAME = Contacts_dat,
FILENAME = ‘c:\data\contacts.mdf’,
SIZE = 1GB)
答案: D.
74.你为一家名为woodgrove 的银行开发数据库。该公司在一个SQL Server 2000数据库中存储它的销售数据。你要在这个数据库中创建一个索引视图。为了达到该目的,你要执行如下脚本:
Set NUMERIC_ROUNDABORT OFF
GO
CREATE VIEW Sales
AS
SELECT SUM(UnitPrice*Quantity*(1.00-Discount))AS Revenue,
OrderDate, ProductID, COUNT_BIG(*) AS COUNT
FROM dbo.OrderDetails AS OD JOIN dbo.Orders AS O
ON OD.OrderID = O.OrderID
GROUP BY O.OrderDate, OD.ProductID
GO
CREATE UNIQUE CLUSTERED INDEX IX_Sales ON Sales (OrderDate,
ProductID)
索引创建失败,并接收到一个错误信息。你要排除错误来创建索引。
问你要怎么做?
A.为视图增加一个order by 子句。
B.为视图增加一个having子句。
C.选择NUMERIC_ROUNDABORT 选项。
D.改变索引为唯一的、非聚集索引
E.为视图增加WITH SCHEMABINDING选项
答案: E.
SCHEMABINDING将视图绑定到架构上。指定 SCHEMABINDING 时,select_statement 必须包含所引用的表、视图或用户定义函数的两部分名称 (owner.object)。
75.你是一个SQL Server 2000 数据库的数据库开发者。另一个名为Andrea的数据库开发者需要修改数据库里的现在视图。然而,你要阻止她检视和替换表里的某些数据。现在,Andrea只有公共数据库的角色。你要怎么做?
A. 把 Andrea添加到 db_owner 数据库角色中.
B. 把 Andrea添加到db_ddladmin数据库角色中.
C.授权给 Andrea 创建视图的权限.
D. 授权给 Andrea 更新视图的权限.
E. 授权给 Andrea 在表中 REFERENCES的权限..
答案: B.
76.你是一家迅速发展的公司的一名数据库开发者。这家公司每个月都要扩充新的销售领域。当每个新的销售领域被增加里,就会有一个或更多的销售伙伴被分配到这个新的地区。销售数据将被插入到一个名为RegionSales的表里,它属于Corporate数据库。RegionSales 表如下所示:
每一个销售伙伴都只能查看和修改RefionSales表里各自地区的信息。要尽可能简单的扩展新的领域和增加销售伙伴。你要怎么做?
A.使用grant、revoke和deny语句来给销售伙伴分配权限。
B.使用企业管理器为RegionSales表分配权限。
C.为每个销售地区创建一张关于RegionSales表的视图,授于销售伙伴访问各自销售地区的视图的权限。
D.创建一个名为Security的新表来包含销售伙伴和销售地区领域的信息。创建一个存储过程,通过和Security表比较来审核用户的合法性,决定允许或不允许修改RegionSales表里的数据。
E.创建一个名为Security的新表来控制销售伙伴和销售领域的结合。创建一个自定义函数用于允许或不允许修改RegionSales表里的数据。授于所有的销售伙伴执行该自定义函数的权限
答案: D
77.你是一家玩具公司的数据库开发者。Marie是另一名开发者,她创建了一张名为ToySales的表。Marie和你都不是系统固定的服务器角色,但你们两个的数据库角色都是db_owner。ToySales表存储公司所有部门的销售信息。该表设置如下:
你以vwDollSales登入到数据库中并创建了一张只显示ToySales表中的dolls的销售信息的视图。在dolls部门的雇员被授于完全访问数。你也创建了一张名为vwActionFigureSales的视图,该视图只显示销售数据。在运算数据部门的雇员被授于完全访问彼此间的数据。这两个部门当前没有访问数据的权力。在数据部门的雇员与dolls数据库角色相关联。运算数据部门的雇员与ActionFigure数据库角色相关联。你要保证两个部门都只能查询各自的数据。你必须执行哪三个步骤?(每一个正确答案是解决方法的一部分,选3个)
A. 把表和视图的所有权转让给数据库所有者。
B. 授予你的登录用户SELECT ToySales表的权限。
C. 授予Doll数据库角色SELECT vwDollSales 视图的权限。
D. 授予ActionFigure数据库角色SELECT vwActionFigureSales 视图的权限。
E. 拒绝Doll数据库角色SELECT ToySales表的权限。
F. 拒绝ActuibFigure数据库角色SELECT ToySales表的权限。
答案: A, C, D.
78.你是一个SQL Server 2000 数据库的数据库开发者。该数据库安装在 Microsoft Windows 2000 Server computer 上。 数据库使用默认配置,数据库中所有的表至少要有一个索引。SQL Server是服务器上唯一一个运行的应用程序。一天中数据库的活动高峰期是在销售代表输入和更新销售处理事务时。批量报告在营业时间后被执行。销售代表报告说更新和插入处理太缓慢。
你要怎么做?
A. 在SQL Server上运行系统监视器:在一天中访问计数器的方法. 使用从系统监视器的输出来识别哪些表需要索引.
B. 使用sp_configure 系统存储过程来增加由SQL Server使用的锁的数量。
C.在一天内运行SQL Profiler。选择SQL:BatchCompleted 和 RPC:Completed 事件和 EventClass 和 TextData 数据列.使用一个SQL事件查看器输出文件作为索引向导的输入文件。
D. 增加 min server memory 选项的有效值。
E.重建索引,把填充因子设为100.
答案: C.
79.你是一个船舶公司的数据库开发者。你有一个SQL Server 2000数据库用于存储订货信息。这个数据库包括有order表和orderdetails表.存储该数据库的计算机有4个9GB的磁盘可用于数据存储。计算机有两个磁盘控制器。每一个磁盘控制器控制两个磁盘。Order表orderdetails 表经常被访问。你需要调节数据库的性能。你该怎么做?(每一个正确答案为解决方法的一部分。选2项)
A.为每一个磁盘创建一个文件组。
B.在一个单独的文件组里为order表创建一个聚集索引与非聚集索引分开。
C.在一个文件组存储orderdetail表的数据和聚集索引,并在另一个文件组里创建非聚集索引。
D.在一个文件组里创建order表和有关order表的索引,在另一个文件组里创建orderdetail 表和有关orderdetail表的索引。
E.创始两个文件组,每一个都有两个磁盘并与同一个控制器联系。
答案:D、E
80.你是一个brokerage公司的数据库开发者。这个数据库包括一张名为Trades的表。如下是用于创建该表的脚本:
CREATE TABLE Trades
(
TradeID int IDENTITY(1,1)PRIMARY KEY NONCLUSTERED NOT NULL,
TradeDate datetime NULL,
SettlementDate datetime NULL,
Units decimal(18, 4) NULL,
Symbol char(5) NULL,
ClientID int NULL,
BrokerID int NULL
)
GO
CREATE CLUSTERED INDEX c_symbol ON Trades (Symbol)
在一天内trades表被频繁的插入和更新。每天晚上都要汇报有关该表的运行。
你在查询分析器里执行如下语句:
DBCC SHOWCONTIG (Trades)
执行后在出现如下结果:
DBCC SHOWCONTIG scanning ‘Trades’ table. . . . .
Table: ‘Trades’(1621580815); index ID:1, database ID:12
Table level scan performed.
-Pages Scanned-----------------------------------------:104
-Extents Scanned---------------------------------------:16
-Extent Switches----------------------------------------:24
-Avg. Pages per Extent-------------------------------:6.5
-Scan Density[Best Count:Actual Count]-----------:52.00%[13:25]
-Logical Scan Fragmentation-------------------------:7.69%
-Extent Scan Fragmentation---------------------------:43.75%
-Avg. Bytes Free per page-----------------------------:460.1
-Avg. Page Density (full)------------------------------:94.32%
DBCC execution completed. If DBCC printed error messages, contact
your system
你要确保在trades表里可任意的进行插入和查询操作。你要怎么做?
A. Execute the DBCC DBREINDEX statement on the table.
B. Execute the UPDATE STATISTICS statement on the table.
C. Execute the DROP STATISTICS statement on the clustered index.
D. Execute the DBCC INDEXDEFRAG statement on the primary key index.
E. Execute the DROP INDEX and CREATE INDEX statements on the primary key index.
答案:A
81.你是一个名为INVENTORY的数据库的开发者。你有一张你创建的报告清单。这些报告将同时被运行。你写出查询语句来创建每个报告。在查询语句的基础上,你设计和创建这个数据库表的索引。 你想要确定你已经创建了有效的索引,你得怎么做?
A 创建一个SQL 事件探查器跟踪,使用OBJECT事件分类。
B依靠包含有在报告中有使用的查询的一个工作量文件来运行索引调整向导。
C运行系统监视器,并且使用SQLSERVER:ACCESS METHODS 计算器
D在查询分析器里执行这些表的查询,并且使用SHOWPLAY-TEXT OPTION。
答案:B
82.你是你公司的SQL SERVER 2000 DB 的数据库开发者。你使用下面的脚本来创建一个名为EMPLOYEE 的视图:
create view emplyee as
select p.ssn,p.lastname,p.firstname,p.address,p.city,p.state,p.birthdate,e.employeeid,e.department,e.salay
from person as p join employees as e on(p.ssn=e.ssn)
这个视图将被一个应用程序使用,这个应用程序是用来向PERSON和EMPLOYEES这两个表里插入记录的。用来创建这些表格的脚本如下所示:
create table person
(ssn char(11) not null primary key,
lastname varchar(50) not null,
firstname varchar(50) not null,
address varchar(100) not null,
city varchar(50) not null,
state char(2) not null,
birthdate datetime not null)
go
create table employees
(employeeid int not null primary key,
ssn char (11) unique not null,
department varchar(10) not null,
salary money not null,
constraint fkempper foreign key(ssn) references person (ssn))
你想要使这个应用程序能够防止视图来发布INSERT语句,你得怎么做?
A 在视图上创建一个AFTER触发器
B 在视图上创建一个INSTEAD OF 触发器
C 在PERSON和EMPLOYEES表上创建一个INSTEAD OF 触发器
D 把视图修改成带有WITH CHECK 选项
E 把视图修改成带有WITH SCHEMABINDING 选项
答案:B
83.你是大世界进口商的一个数据库开发者。你正在为公司的SQL SERVER2000 DB创建一个名为ORDERS的表。每一个订单包含ORDERID,ORDERDATE,CUSTOMERID,SHIPPERID,SHIPDATE.当订单要输入时,带有订单的客户服务代表得输入ORDERDATE,CUSTOMERID和SHIPPERID。ORDERID由数据库自动生成,并且一定是唯一的。订单只能从存在的客户那里得到。SHIPPERS只能从一个存在的SHIPPERS集中选择。在客户服务代表完成订单后,这个订单被送到装运部门进行最后的处理。当订单被装运后,装运部门就输入SHIP DATE。
下面哪一个语句可以用来创建ORDERS表?
A. CREATE TABLE Orders
(
OrderID uniqueidentifier PRIMARY KEY NOT NULL,
OrderDate datetime NULL,
CustomerID char(5) NOT NULL FOREIGN KEY
REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY
REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
B. CREATE TABLE Orders
(
OrderID int identity (1, 1) PRIMARY KEY NOT NULL,
OrderDate datetime NOT NULL,
CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
C. CREATE TABLE Orders
(
OrderID int identity (1, 1) PRIMARY KEY NOT NULL,
OrderDate datetime NULL,
CustomerID char(5) NOT NULL FOREIGN KEY
REFERENCES Customer (Customer ID),
ShipperID int NULL,
ShipDate datetime Null
)
D. CREATE TABLE Orders
(
OrderID uniqueidentifier PRIMARY KEY NOT NULL,
OrderDate datetime NOT NULL,
CustomerID char(5) NOT NULL FOREIGN KEY REFERENCES Customer (Customer ID),
ShipperID int NOT NULL FOREIGN KEY REFERENCES Shippers(ShipperID),
ShipDate datetime Null
)
答案:B
84.你是LUCERNE 出版社的数据库开发者。公司把数据存放在SQL SERVER 2000里。这个数据库包含一个名为ORDERS的表。当前,这个表上有一个聚集索引,这个索引是由客户名和当前日期生成的。当前,ORDERS表有750000行,并且行数每周增加5%。公司计划下周开展促销活动,那样ORDERS表的行插入量将会增长50%。你要在促销期间优化ORDERS表的插入,你得怎么做?
A 每天晚上创建一个作业来重新组建聚集索引,并且使用FILLFACTOR默认。
B 给ORDERS表增加另外的索引。
C 垂直分割ORDERS表。
D 重建聚集索引,使用FILLFACTOR OF 50
E 在ORDERS表上执行更新统计(UPDATE STATISTICS)
答案:D
85.你正在设计你公司的SALES数据库。这个数据库将由三个客户应用程序使用。需要访问这个数据库的用户当前MICROSOFT WINDOWS 2000 的用户组。用户根据他们的数据库访问需求存放在WINDOWS 2000组中。客户端应用程序通过每一个应用程序各自的应用程序角色连接SALES数据库。每一个应用程序角色都分配一个密码。所有的用户都只能通过客户应用程序来访问SALES数据库。数据库没有授给任何的许可。你要怎么做?
A 给每一个WINDOWS2000组分配适当的许可。
B 给每一个应用程序角色分配适当的许可。
C 把WINDOWS 2000组成员分配给合适的的应用程序角色。
D 给应用程序角色提供带有密码的用户。
答案:B
86.你是你公司INSURANCE数据库的开发者。你在SQL查询分析器里执行以下的脚本来检索代理表和保险单信息:
SELECT A.LastName, A.FirstName, A.CompanyName, P.PolicyNumber
FROM Policy AS P JOIN AgentPolicy AS AP
ON (P.PolicyNumber = AP.PolicyNumber)
JOIN Agents AS A ON (A.AgentID= AP.AgentID)
生成的查询执行计划如下所示:
Table ScanScan rows from a tablePhysical operation: Table ScanLogical operation: Table ScanRow count: 6,969Estlmated row slze: 105I/O cost: 0.00139CPU cost: 0.00773Number of executes: 1Cost: 0.157175(12%)Subtree cost: 0.157Estimated row count: 6,969Argument:OBJECT:([Insurance].[dbo].[Agents])
当你把光标指向扫描表的图标时,你得到的信息如下所示:
你想要提高这个查询的性能。你得怎么做?
A 改变FROM子句中表的次序,把AGENT表放在最前面
B 查询中使用HASH JOIN 来连接AGENTS表
C 用AGENTS 表中的AGENTID列创建一个聚集索引。
D用AGENTS 表中的AGENTID列创建一个非集索引。
答案:C
87.你是一个数据库顾问。你的一个客户报告说SQL Server 2000 的查询反应时间缓慢,特别是需要表连接的时候。哪些步骤你要执行来分析这个性能问题?
答案: Step 1 Use SQL Profiler to create a trace based on the SQL Profiler Tuning Template
Step 2 Specify that the trace data be saved to a file, and specify a maximum file size.
Step 3 Specify a stop time for the trace.
Step 4 Run the trace.
Step 5 Use the trace file as an input to the Index Tuning Wizard.
Step 6 Replay the trace, and examine the output.
Step 7 (none)
88.你是一个为WINGTIP TOYS的数据库开发者。这个公司把销售信息存放在SQL SERVER 2000 DB里。这个数据库包含一个名叫ORDERS表。你想要把旧的数据从ORDERS表移到一个档案表。在执行这个处理前,你想要确定优化查询是怎样处理插入语句的。
你在SQL查询分析器里执行以下的语句:
SET SHOWPLAN_TEXT ON
GO
CREATE TABLE Archived_Orders_1995_1999
(
OrderID int,
CustomerID char (5),
EmployeeID int,
OrderDate datetime,
ShippedDate datetime
)
INSERT INTO Archived_Orders_1995_1999
SELECT OrderID, CustomerID, EmployeeID, OrderDate, ShippedDate
FROM SalesOrders
WHERE ShippedDate < DATEADD (year, -1, getdate())
你得到如下的错误信息:
Invalid object name ‘Archived_Orders_1995_1999’.
你要解决这个问题,要怎么做?
A 把CHIVED_ORDERS_1995_1999表命名为所有者名字
B 请求CREATE TABLE 许可
C 在你执行SET SHOWPLAN_TEXT ON 语句前,创建ARCHIVE_ORDERS_1995_1999 表
D 把表名改成ARCHIVEDORDERS
答案:C
SET SHOWPLAN_TEXT
使 Microsoft® SQL Server™ 不执行 Transact-SQL 语句。相反,SQL Server 返回有关如何执行语句的详细信息。
当 SET SHOWPLAN_TEXT 为 ON 时,SQL Server 返回各个 Transact-SQL 语句的执行信息但不执行语句
89.你是Woodgrove银行的数据库开发者.公司有一个包含人力资源信息的数据库.你正在设计事务以支持数据进入数据库.你设计的两个事务的脚本如下:
Transaction1 Transaction2
BEGIN TRANSACTIONUPDATE CustomerSET CustomerName=@NameWHERECustomerID=@CustIDUPDATE CustomerPhoneSET PhoneNumber=@PhoneWHERECustomerID=@CustIDAND PhoneType=@PTypeCOMMIT TRANSACTION BEGIN TRANSACTIONUPDATE CustomerPhone SETPhoneNumber=@PhoneWHERE CustomerID=@CustIDAND PhoneType = @PTypeUPDATE CustomerAddress SET Street =@StreetWHERE CustomerID=@CustIDAND AddressType=@ATypeUPDATE Customer SET CustomerName =@NameWHERE CustomerID = @CustIDCOMMIT TRANSACTION
当你检测这些脚本时,你发现数据库服务器偶尔探测到一个死锁请况.你该怎么办?
A. 在第二个事务中,把update customer 语句放在update customerphone语句之前
B. 增加一个 SET DEADLOCK_PRIORITY LOW 语句到两个事务上。
D. 增加一个 SET LOCK_TIMEOUT 0语句到两个事务上。
答案: A.
90.你是一个公司的数据库开发者,该公司为棒球队编辑统计数据.这些统计数字被储存在Statistics数据库中.每个队的队员被登记在Statistics数据库的表Rosters中.创建表Rosters的脚本如下所示:
CREATE TABLE Rosters(RosterID int NOT NULL,TeamID int NOT NULL,FirstName char (20) NOT NULL,LastName char (20) NOT NULL,CONSTRAINT PK_Rosters PRIMARY KEY (RosterID),CONSTRAINT FK_TeamRoster FOREIGN KEY (TeamID)REFERENCES Team (TeamID))
在表Rosters中每个棒球队一次最多有24个队员,你需要保证球队人数不超过该最大值.
你该怎么办?
A.在表Rosters中创建触发器验证该数字.
B.创建一种角色来验证该数字。
C. 创建一个包含WITH CHECK OPTION字句的 UPDATE 视图。
D.在 Rosters 表上添加一个CHECK约束来验证该数字。
答案: A.
91.你是一家咨询公司的数据库开发者.你创建一个名为reporting的数据库.顾客姓名和id来自于其他两个名为training和consulting的数据库,而且要导入reporting数据库.
你在reporting数据库中创建一个customers表.创建脚本如下所示:
CREATE TABLE Customers(CustomerKey int NOT NULL,SourceID int NOT NULL,CustomerName varchar(100) NOT NULL,CONSTRAINT PRIMARY KEY PK_Customers (CustomerKey))
数据必须从training数据库中的students表和consulting数据库中的clients表传到customers表.students表和clients表如下所示:
你必须创建一个传输数据到customers表的脚本.该脚本的第一部分如下所示:
SCRIPT:
CREATE TABLE #tmpCustomers(CustomerID int IDENTITY(1, 1) NOT NULL,SourceID int NOT NULL,CustomerName varchar(100) NOT NULL,CONSTRAINT PRIMARY KEY PK_tmpCustomers (CustomerID))INSERT INTO #tmpCustomers (SourceID, CustomerName)SELECT StudentID, StudentName FROM Training.dbo.StudentsIF @@ERROR <> 0 RETURNINSERT INTO #tmpCustomers (SourceID, CustomerName)SELECT ClientID, ClientName FROM Consulting.dbo.ClientsIF @@ERROR <> 0 RETURN
为完成脚本,选择需要的脚本并排列顺序.
SELECT AND PLACE
答案:
92.你是一个投资经纪公司的数据库开发者.公司有一个stocks数据库,包含currentprice和pastprice表.投资股票当前的价格被储存在currentprice表.先前的股票价格被储存在pastprice表.这些表如下所示:
表包含的数据如下所示:
currentprice表中的所有行在营业日结束时被更新,即使股票价格自从上一次更新以来没有改变(也要更新).如果股票价格从上一次更新以来已经改变,那么必须在pastprice表中插入一行.
你必须为数据库设计一个方法自动执行这个动作.你该怎么办?
A.在currentprice表中创建一个after触发器,用来比较在inserted和deleted表中stockprice列的值.如果值不一样,那么触发器将插入一行到pastprice表中.
B.在currentprice表中创建一个after触发器, 用来比较在inserted和CurrentPrice表中stockprice列的值。如果值不一样,那么触发器将插入一行到pastprice表中.
C.在CurrentPrice表上创建一个级联更新约束来更新PastPrice表中的行。
D.创建一个存储过程用来比较表CurrentPrice上StockPrice字段的新旧值 。如果值不一样,那么过程将插入一行到pastprice表中.
答案: A.
93.你是Wingtip Toys的数据库开发者.公司在sqlserver 2000数据库中跟踪它的存货.你有几个查询和储存过程,储存过程执行在数据库索引上以支持已创建的查询.当编制的存货项目增加时,一些存储过程的执行时间明显增加.其他访问同样信息的查询和储存过程并没有增加.你必须恢复运行慢的储存过程的性能,达到原先执行的时间.你该怎么办?
A. 总是使用 WITH RECOMPILE 选项去执行运行慢的存储过程。
B. 为每张表中运行慢的存储过程执行UPDATE STATISTICS语句。
C. 为每一个运行慢的存储过程执行sp_recompile系统储存过程.
D. 为每张表中运行慢的存储过程执行DBCC REINDEX语句。
答案: C.
94.你是一个行销公司的数据库开发者.你设计了一个每季的销售视图.这个视图加入了几个表和计算合计信息.你在视图上创建了一个唯一的索引.你想提供一个参数查询去访问包含在你的索引视图中的数据.输出必须用在其他的select 列中.
你如何完成这个目标?
A. 使用 ALTER VIEW语句 添加参数值到视图的定义中。
B.创建一个存储过程接收输入参数并且返回结果集。
C.创建一个用户自定义标量函数接收输入参数。
D.创建一个联机用户自定义函数接收输入参数
答案: C.
95.你正在为一个大型的食品连锁店做设计.部分数据库计划如下所示.
用来创建customers表的脚本如下所示.
商店经理想跟踪顾客人口,以便给顾客提供广告和促销优惠卷.这些广告和促销将基于现存顾客过去的购买情况.广告和促销将通过一个或更多的人口资料来锁定购买方式,这些人口资料有:性别,年龄,邮编号码和地区.大部分的促销将基于性别和年龄.将用查询来检索顾客人口统计信息.你想查询反应时间尽可能快.你该怎么办?
A. 为Customers 表的PostalCode、 State和 DateOfBirth列添加索引。
B. 不规范化custmoers表
C. 在Customers、 SalesLineItem、 State,和 Product表上创建一个视图。
D. 创建一个函数用来返回Customers表上所需要的数据。
答案: B.
96.你是一个Lucerne Publishing的数据库开发者. 你要设计一个人力资源数据库,该库包含employee和salary表.
你和用户面谈并且发现下面这些信息:
employee表将经常通过employeeid列和salary表连接
employee表上的个人记录将通过社会安全号码(ssn)来选择
将创建一列雇员.他们先以last name 的字母顺序排序,在以first name的字母顺序排序
你需要为表设计索引,同时优化索引性能.
你应该采用哪3个脚本?
A. CREATE CLUSTERED INDEX [IX_EmployeeName] ON [dbo].[Employee] ([LastName],[FirstName])
B. CREATE INDEX [IX_EmployeeFirstName] ON [dbo].[Employee] ([First Name])
CREATE INDEX [IX_EmployeeLastName] ON [dbo].[Employee] ([Last Name])
C. CREATE UNIQUE INDEX [IX_EmployeeEmployeeID] ON [dbo].[Employee] ([EmployeeID])
D. CREATE UNIQUE INDEX [IX_EmployeeSSN] ON [dbo].[Employee] ([SSN])
E. CREATE CLUSTERED INDEX [IX_EmployeeEmployeeID] ON [dbo].[Employee]([EmployeeID])
F. CREATE CLUSTERED INDEX [IX_EmployeeSSN] ON [dbo].[Employee] ([SSN])
答案: A, C, D.
97.你是一个大型电子功能公司的数据库开发者.公司划分成许多的部门,而且公司的每一个雇员都分配到某个部门. 你创建一个employee表,包含所有雇员的信息,也包含他们所属的部门。创建employee的脚本如下所示:
CREATE TABLE Employee(EmployeeID uniqueidentifier NOT NULL,FirstName char (20) NOT NULL,LastName char (25) NOT NULL,DepartmentID int NOT NULL,Salary money NOT NULL,CONSTRAINT PK_Employee PRIMARY KEY (EmployeeID))
每个部门经理应该只能看到属于他部门的雇员的信息。你应该怎么办?
A. 使用授予、拒绝、废除语句为每个部门经理分派权限。
B. 为每个部门经理添加一个数据库注册到 db_datareader 固定数据库角色中。
C. 在employee表,建立表和视图,强制水平级别安全
D. 在 Employee表上使用SQL Server Enterprise Manager来分派权限。
答案: C.
98.你是你公司人力资源数据库的数据库开发者。该数据库包含employee表,表含有秘密的ID号和薪水。这个表也包含非秘密的信息,如雇员姓名和地址。
你必须在employee表建立所有非秘密信息,用于以XML格式给一个外部应用程序使用。这个外部应用程序应该能够具体化XML数据的精确格式。你也必须对这个外部应用程序隐藏现存的秘密信息。
你应该怎么做?
A.创建一个从Employee表返回非秘密信息的存储过程,用XML来格式化。
B创建一个从Employee表返回非秘密信息的用户自定义函数,用XML来格式化。
C. 从employee表创建视图,仅包含非秘密的信息。给予它外部操作的权限来阻止视图的提交查询。
D. 在Employee表上设置 column-level 权限来阻止外部操作查看秘密的字段。
给予它外部操作的权限来阻止视图的提交查询。
答案: C.
99.你是一个Tailspin Toys的数据库开发者。你有两个SQL Server 2000计算机,名为CORP1和CORP2。这两台计算机使用SQL Server 2000验证方式。CORP2存储来自于CORP1的数据。每个月末,数据从CORP1移除并传到CORP2.你正在设计季报告,包含来自于CORP1和CORP2的数据。你想要分布式查询尽快的查询。你应该采取哪3个步骤?
A. 创建一个储存过程,使用OPENROWSET语句来检索数据
B. 创建一个储存过程,使用完全表名在CORP2检索数据
C. 创建一个脚本,使用OPENQUERY语句来检索数据
D. 在CORP1执行sp_addlinkedserver系统存储过程
E. 在CORP1执行sp_addlinkedsrvlogin系统存储过程
F. 在CORP2执行sp_serveroption系统存储过程并且把collation compatible设置为ON.
答案: B, D, E.
100.你是一个IT咨询公司的数据库开发者。你正在设计一个数据库来存储在位顾问的信息。你在数据库中创建了一个CandidateSkills表。表如图所示:
你应该怎么样唯一识别每个顾问的技能?
A. 在CandidateID列上创建主键
B. 在CandidateID和DateLastUsed列上创建主键
C. 在CandidateID 和 SkillID列上创建主键
D. 在CandidateID 、SkillID和DateLastUsed列上创建主键
答案: C.
101.你是Proseware公司的数据库开发者。你为公司的人力资源部。该数据库储存雇员信息。你创建了一个EmployeeContact表包含下面的列:HomePhone, BusinessPhone, FaxNumber, and EmailAddress你必须保证每个记录包含一个值,或者HomePhone列或者BusinessPhone列,你应该怎么做?
A.创建一个禁止空值的角色.将该角色赋予HomePhone 和BusinessPhone列
B. 创建一种用来阻止在HomePhone和BusinessPhone列中输入空值的角色.将该角色赋予表。
C. 在HomePhone 和 BusinessPhone列中添加check 约束用来阻止空值的输入。
D. 添加check 约束,验证HomePhone和BusinessPhone列至少有一列不为空
答案: D.
102.你为Contoso公司设计一个库存和商品买卖数据库。你创建了逻辑数据库如图所示:
你必须保证维护数据库的参照完整性。哪3个类型的约束应该应用于设计?
A. 在Products表上创建外键约束,指向OrderDetails表
B. 在Products表上创建外键约束,指向Suppliers表
C. 在Order表上创建外键约束,指向OrderDetails表
D. 在OrderDetails表上创建外键约束,指向Order表
E. 在OrderDetails表上创建外键约束,指向Products表
F. 在Suppliers表上创建外键约束,指向Products表
答案: B, D, E.
103.你是SQL Server2000数据库的开发者。你为销售部门创建了一个存储过程,生成EndOfMonthSales报告。
你利用下面的语句为EndOfMonthSales报告分配权限
GRANT EXECUTE ON EndOfMonthSales TO SalesDept
Andrea加入了销售部门并且成为SalesDept角色成员。Andrea也是Marketing角色成员,该角色已经被拒绝访问EndOfMonthSales报告。
Andrea不能执行存储过程。其他销售部门的雇员没有碰到该问题。
你该怎么办?
A.添加 Andrea 到db_datareader 数据库角色中.授予 REFERENCES权限到 public 角色中.
B.从Marketing角色中删除Andrea。
C.在已经引用存储过程的表上授予 Andrea’s数据库用户账户选择的权限.
D.在已经引用存储过程的表上授予 Andrea’s数据库用户账户REFERENCES的权限.
答案: B.
104.你是一个大型旅游公司的数据库开发者.你在resvervation数据库中被授予CREATE VIEW的权限.你的同事Eric被授予CREATE TABLE的权限.你们俩都没有数据库拥有者或者系统权限,也没有被添加到任何固定服务器角色中.Eric已经创建了Traveler表并且存有公司顾客的信息.表如下所示:旅行代理处要连接数据库浏览存储在该表的信息.对应旅行代理处的登录被分配到Agent数据库角色中.你想旅行代理处能够浏览Traveler表中姓名和地址两列信息,而不是六列信息.你应该采取哪3个步骤?
A.授予agent角色对Traveler 表有选择的权限
B.叫Eric授予agent角色在Traveler表上有选择的权限.
C.叫Eric授予你Traveler表中需要的列的select权限.
D.叫Eric创建一个名为vwTravelers的视图,并以所希望的格式显示数据
E.创建一个视图vwTravelers,并以所希望的格式显示数据
F.授予agent角色对视图vwTravelers有选择的权限
答案: C, E, F.
105.你是一个食物批发商的数据库开发者.每星期,公司完成不同顾客的订单.通常,每个顾客每星期定购同样数量的一定项目.偶尔,顾客定购的某个项目的数量明显少于顾客通常的数量.订单的信息储存在表invoice中,该表在sqlserver2000数据库中.创建该表的脚本如图所示:
EXHIBIT
CREATE TABLE Invoice(InvoiceID int NOT NULL,InvoiceNumber char(10) NOT NULL,CustomerName char(30) NOT NULL,InvoiceAmount money NOT NULL DEFAULT (0),CONSTRAINT PK_Invoice PRIMARY KEY (InvoiceID))
你想验证这些和平常不一样的订单的样品,为此,你必须为每个顾客生成一列货物,货物数量少于该顾客平均的货物数量.你应该用哪个查询?
A. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1, Invoice AS i2
GROUP BY i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
HAVING i1.InvoiceAmount < AVG (i2.InvoiceAmount)
ORDER BY i1.CustomerName, i1.InvoiceNumber
B. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1
WHERE i1.InvoiceAmount <
(SELECT AVG (i2.InvoiceAmount)
FROM Invoice AS i2
WHERE i2.CustomerName=i1.CustomerName)
ORDER BY i1.CustomerName, i1.InvoiceNumber
C. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
FROM Invoice As i1
WHERE i1.InvoiceAmount <
(SELECT AVG (i2.InvoiceAmount)
FROM Invoice AS i2)
ORDER BY i1.CustomerName, i1.InvoiceNumber
D. SELECT i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount,
CASE WHEN i1.InvoiceAmount < AVG (i2.InvoiceAmount)
THEN i1.InvoiceAmount ELSE 0 END
FROM Invoice As i1 INNER JOIN Invoice AS i2
ON i1.CustomerName = i2.CustomerName
GROUP BY i1.InvoiceNumber, i1.CustomerName, i1.InvoiceAmount
ORDER BY i1.CustomerName, i1.InvoiceNumber
答案: B.
106.你是Contoso公司的数据库开发者.公司在SQL Server2000中储存它的销售数据.数据库包含一个表customers,它有500,000行.用来创建表customers的脚本如图所示:
CREATE TABLE Customers(CustomerID int IDENTITY NOT NULL,CompanyName varchar(40) NOT NULL,ContactName varchar(30) NULL,ContactTitle varchar(30) NULL,Address varchar(60) NULL,City varchar(15) NULL,Region varchar(15) NULL,PostalCode varchar(10) NULL,Country varchar(15) NULL,Phone varchar(24) NULL,Fax varchar(24) NULL,CONSTRAINT PK_Customers PRIMARY KEY CLUSTERED (CustomerID))
许多重要的查询在该表上执行,该查询选择基于城市和地区列的顾客信息.非常少的顾客住在同样的城市,但许多处于同样的地区.你应该怎样来优化这些查询的性能?
A.在Customers表上创建一个视图.
B.为Customers表创建一个返回数据的函数.
C.在city和region列上创建一个复合的非集聚索引,并且city作为第一列.
D.在City和Region 列上创建一个复合的非聚集索引并且把 Region作为第一列.
E. 把City 和Region列添加到聚集索引中并把 Region 作为第一列
答案: C.
107.你是一个SQL Server2000数据库的开发者.数据库默认配置.在过去的一个月访问数据库的用户从100增加到1000.用户通知你他们频繁地收到错误的信息.下面是一个收到错误信息的例子:
Transaction (Process ID 56) was deadlocked on [lock] resources with another
process and has been chosen as the deadlock victim. Rerun the transaction.
你应该怎么办?
A.在数据库中为事件使用更高的事务隔离级别.
B.使用SQL Profiler捕获死锁事件
C.使用系统监视器来监视锁的请求和死锁.
D. 执行 sp_configure系统存储过程来增加允许同时连接SQL server.的用户数量
答案:B