星期六, 12月 13, 2008

朋友名言「你並沒有比你所想的厲害」 Part 1

經過一年的工作經驗之後,面對來自社會及失業的壓力;我不得不說今次的想法和過去的我有著明顯的不同。社會分成不同的族群、國家,每個國人都有不同生活方式。國與國之間互相著引響,是錢的問題,還是生活的方法,又或是貪婪的慾望,導致今日結果。相比之下,我不得不去思考,到底,我的生活方式是什麼。是奢華生活,還是簡約生活,不管哪一種,似乎都必須奮鬥才能繼續下去,在人群之中是何等的渺小。

一個來自朋友的談話「你並沒有比你所想的厲害」換句話說,你和你猜想的「真正的你」一樣,或是更差。為什麼會這樣?我不得不思考這突如其來的問題。

他詳述了一個到他們公司面識的人,面識的是一個有碩士學歷並有兩年工作經驗的人。他希望有5年的待遇,因為他有碩士學歷。仰或是他不在乎,他並沒有在面識中回答任何問題,僅管問題是一個連普通高中生都會回答的問題。詳查之後,原來在這之前他有和經理碰面,那時經理似乎看不起他,他覺得自己不會被錄取也就不再回答任何問題。

以上詳述的是一個故事。這故事是想要說什麼?就自己想想看吧,相信是另一種不同的理解

星期二, 10月 14, 2008

夏日友人帳




另一個我愛上的卡通,雖然短了點

輕鬆讓網頁支援過時的 IE6

昨天搞了一個晚上就是要讓網頁支援 IE6!除了花大筆的時間之外,也不斷重覆著 display:inline, _height:0 又或是 zoom:100 (乃威建議的),真是辛苦了。現在的工具都太新了,從生產到測試都是最新版,但話說回來,舊的東西也不能不顧,真是痛苦的人生呀!(案編:還是快躲進理想屋裡頭!)

首先當網站不支援 IE6 的時候要怎麼辨?
方法1. 告訴使用者:不行了?
IE6 blocker script 是使用 CSS position: fixed 把背景黑掉引起使用者注意的東西。
當然因為是容易的東西,IE6 不支援 position: fixed 因此,還是不支援 =_= ,儘管是 javascript,用起來卻像是 position: absolute 的效果,沒有針對操作上的 scroll-down 情形,結果來說並不是很好看,也不算是好方法。

方法2. 把它修好:當然啦,不是一般的苦力就行的
網路是一個很方便的東西,可惜它並不會教人們如何思考。我還是只說我的心得吧!
就請讀者試過之後,再來交換一下心得吧!

心得1. float:left/right 會有傳說中的 double margin bug,
加一行 _display:inline 即可修正。有兩的以上的 floating 在一起的時候,就必須要修
(不要因為看起來沒事就不修,它們還是會互相影響!)

心得2. float:left/right 的東西如果有 wrapper(就是大 div 將他們包起來的話),可使用 overflow:hidden (IE7), 或 _height:100% (IE6), 或 elementnameXxx:after { content " "; clear:both; }

心得2.1 使用_height:100% (IE6) 的修法的話:
如果有 padding 的話,用 height:100% 會看不到下面的 padding/border 相當麻煩,只能用 javascript修改 height 或多一個 dummy container with style { clear:both } 放在下面,就會包的很漂亮。建議使用後面的方法

心得2.2 使用overflow:hidden (IE7) 的修法的話:
注意 ajax 配合使用上的問題,overflow:hidden 的層上如果疊上另一層邊邊會被消掉

心得2.3 使用elementnameXxx:after { content " "; clear:both; } 的修法的話:
目前沒有試成功耶,你們真的有試成功嗎?這只是我自己猜想出的修法而己,理念上是對的

心得3. 如果有一個 wrapper,它有 background-image 的 style, 而 children 裡面的東西沒有任何的 float:left/right containers, 那麼就應該用 _height: 0; 來代替心得2 的例子。原因是 IE6 不管怎麼樣都會把外包的 wrapper 撐大,使用 _height: 100% 也有同樣的結果,這裡特別說明是因為 height: 0 居然可以在設特例下使用,非常好玩!

心得4. 關於透明 png 的支援,恐怕是最難解決的問題,如果只是 img 又或 background-image 皆可使用 IE6 的 filter 解決。先決條件就是會有 z-index 問題,所以上面幾乎不能疊東西,用 png 做 button 可算是自殺式行為。

心得5. 使用 Browser-Specific selectors

IE 6 and below

* html {}

IE 7 and below

*:first-child+html {} * html {}

IE 7 only

*:first-child+html {}

IE 7 and modern browsers only

html>body {}

Modern browsers only (not IE 7)

html>/**/body {}

Recent Opera versions 9 and below

html:first-child {}

Safari

html[xmlns*=""] body:last-child {}

但是有可能,真的很可能,你不會需要這些 selectors, 因為專門給 IE 用的版本
.classname {
background: #fff; /* all browsers including Mac IE */
*background: #fff; /* IE 7 and below */
_background: #fff; /* IE 6 and below */
_bac\kground: #fff; /* IE 6 only */
}
看出分別了嗎?
那麼我們下次再會了~

Reference:
Introducing SuperSleight
The PNG problem in Windows Internet Explorer

IE CSS Bugs That’ll Get You Every Time

卡通CD封面




真棒的故事加角色設計,看過之後總是感到自由的氣息。

星期五, 2月 22, 2008

08年2月23日 大雨

頭好痛,昨天晚上太晚睡,到現在是昏昏的

08年2月22日 小雨

晚上是我第一次買中文書,也是我覺得過的最充實的一天
我買的是 演算法概論 蔡郁彬、胡繼陽、侯玉展 著 2007 六月初版
這本我一看就愛上了,因為所有的論點都用簡單的生活例子來解釋,內容廣範,而不失主旨
有了這東西之後,就可以好好地整理雜亂的思維,每種都試一次,想到這裡我就很高興

最近一直寫程式覺得自己愈寫愈不會寫了,可能是因為練習速度而變成很主觀的寫程式,思考可能要全面一點,我下星期我一定要 get 一本 spring 2 的書來好好的思考這個問題。

takk 給我的,我有空要了解一下,他的 ai 筆記本我還沒看呢!
http://en.wikipedia.org/wiki/Edge_detection
http://en.wikipedia.org/wiki/Hough_transform

晚上 4 點才睡,一直想著 dynamic sql 問題

SQL Server 2000考試模擬題

SQL Server 2000 數據庫程序設計(MCP 70-229)

考試模擬題

1. 你是一家公司的數據庫開發員,你正在創建一個數據庫用來存儲15所中學運動會的統計信息,這些信息將被50個公司用來在他們網站上發佈運動會信息。每個公司的Web站點用不同的格式排列和顯示統計表。你需要把數據打包傳送給這些公司,你該怎麼做?

A. 用包括FOR XML 子句的SELECT語句來提取數據

B. 使用sp_makewebtask系統存儲過程來產生由SELECT語句返回的數據的HTML文本

C. 創建數據傳輸服務數據包來導出數據庫的數據,並把這些數據放到tab分隔的文本文

件中

D. 創建一個應用程序,此應用程序用SQL_DMO提取數據庫的數據並把這些數據轉換為標

准電子數據交換(EDI)文件

正確答案:A

2. 你是一家公司的數據庫開發人員,你創建了兩個事務來把員工的信息錄入到公司的數據庫中。一個事務是用來把員工的名字和地址信息插入到數據庫中,這個事務是 重要的。另外一個事務把員工的統計信息插入到數據庫,這個事務不是最重要。數據庫管理員通知你數據庫服務器在高使用率期間有時候會出錯。每次這種情況發生 時,數據庫服務器

就會隨機中斷其中一個事務。你必須確保當數據庫服務器中斷其中一個事務時,它將不會中斷更重要的那個事務。你該怎麼做?

A. 為插入員工名字和地址信息的事務設置DEADLOCK_PRIORITY為LOW

B. 為插入員工人口統計信息的事務設置DEADLOCK_PRIORITY為LOW

C. 添加條件代碼來核對插入員工名字和地址信息事務的1205服務器錯誤,如果遇到

這個錯誤,重啟這個事務

D. 在事務中的數據操縱SQL語句中添加ROWLOCK 最優化提示

E. 為插入員工名字和地址信息的事務設置事務隔離級別為SERIALIZABLE

正確答案:B

3. 你是公司SQL Server 2000 數據庫的開發者。你更新了數據庫裡幾個存儲過程來創建新的月終銷售部門的報表。此存儲過程包括綜合查詢從三個或者更多的數據表中檢索數據。所有數據庫中的 表至少有一個索引。用戶反映新的月終報表比前一個版本的報表運行速度慢很多。你想改善報表的性能。你該怎麼做?

A. 創建一個腳本,包括每個存儲過程中的數據定義語言(Data Definition Language),使用這個腳本作為索引調整嚮導(Index Tuning Wizard)的工作量文件

B. 在SQL部署跟蹤器中捕獲每個存儲過程的執行,使用跟蹤文件作為索引調整嚮導(Index Tuning Wizard)的工作量文件

C. 更新存儲過程使用的數據表統計索引

D. 在SQL查詢分析器中執行每個存儲過程,並使用Show Execution Plan選項

E. 在SQL查詢分析器中執行每個存儲過程,並使用Show Server Trace選項

正確答案:E

4. 你是一家進口商的數據庫管理員,你正在創建一個存儲訂單信息的數據庫。訂單將會在一個client/server 應用系統中錄入,每次一個新的訂單錄入時,必須分配一個唯一的訂單編號,訂單編號必須以升序分配。每天平均有10000 個訂單被錄入。你創建了一個新的名為Orders 的表,並在這個表裡添加了一個OrderNumber 列。接下來你該做什麼?

A. 設置這個列的數據類型為uniqueidentifier

B. 設置這個列的數據類型為int,並為這個列設置IDENTITY屬性

C. 設置這個列的數據類型為int,創建一個用戶定義的方法來選擇表中最大的訂單編號

D. 設置這個列的數據類型為int,創建一個NextKey表,並被這個表添加一個NextOrder

列,設置NextOrder列的數據類型為int,創建一個存儲過程來檢索並更新NextKey

中的值

正確答案:B

5. 你正在設計一個包含客戶訂單的數據庫,每次當客戶給出一個訂單時,都能夠定購多種產品。你檢查了如下所示的數據庫設計:

你想提高查詢響應速度和最小化冗餘數據,你該怎麼做?(選擇兩個可行的解決方法)

A. 創建一個名為OrderDetail的新的訂單表,給這個表添加OrderID, ProductID和Quantity列

B. 給表Orders中的OrderID和ProductID列創建一個復合主鍵約束

C. 從Orders表中移除ProductID和Quantity列

D. 給Orders表的OrderID列創建一個UNIQUE約束

E. 把UnitPrice列從Products表移到Orders表

正確答案:A,C

6. 你是某出版公司的數據庫開發人員,你創建了下面存儲過程來匯報某本書從年初至今的銷售情況:

CREATE PROCEDURE get_sales_for_title

%title varchar(80), @ytd_sales int OUTPUT

AS

SELECT @ytd_sales = ytd_sales

FROM titles

WHERE title = @title

IF @@ROWCOUNT = 0

RETURN(-1)

ELSE

RETURN(0)

你正在創建一個腳本來執行這個存儲過程,如果存儲過程執行成功,它就會匯報某本書從年初至今的銷售情況,如果存儲過程執行失敗,就會報告以下信息:「No Sales Found」,你該如何創建這個腳本?

A. DECLARE @retval int

DECLARE @ytd int

EXEC get_sales_for_title 『Net Etiquette', @ytd

IF @retval <>

PRINT 『No sales found'

ELSE

PRINT 『Year to date sales: 』 + STR (@ytd)

GO

B. DECLARE @retval int

DECLARE @ytd int

EXEC get_sales_for_title 『Net Etiquette', @ytd OUTPUT

IF @retval <>

PRINT 『No sales found'

ELSE

PRINT 『Year to date sales: 』 + STR (@ytd)

GO

C. DECLARE @retval int

DECLARE @ytd int

EXEC get_sales_for_title 『Net Etiquette',@retval OUTPUT

IF @retval <>

PRINT 『No sales found'

ELSE

PRINT 『Year to date sales: 』 + STR (@ytd)

GO

D. DECLARE @retval int

DECLARE @ytd int

EXEC @retval = get_sales_for_title 『Net Etiquette', @ytd OUTPUT

IF @retval <>

PRINT 『No sales found'

ELSE

PRINT 『Year to date sales: 』 + STR (@ytd)

GO

正確答案:D

7. 你是一家保險公司的數據庫開發人員,公司有一個多層應用系統用來錄入關於公司保險單和保險單所有者的數據。保險單所有者信息存儲在Owners 表中,用來創建這個表的腳本如下所示:

CREATE TABLE Owners

(

OwnerID int IDENTITY (1, 1) NOT NULL,

FirstName char(20) NULL,

LastName char(30) NULL,

BirthDate date NULL,

CONSTRAINT PK_Owners PRIMARY KEY (Owner ID)

)

當保險單所有者的信息被錄入時,如果所有者的出生日期沒有被包括進來;數據庫需要產生一個自定義的錯誤信息在數據錄入系統中顯示。你需要為數據庫設計一個方法能夠確認出生日期被提供,並在沒有提供出生日期時產生一個錯誤,你該怎麼做?

A. 在BirthDate 列添加一個CHECK約束

B. 創建一個規則,並把這個規則和BirthDate 列綁定

C. 修改Owners表,使BirthDate 列不允許為空

D. 為Owners表創建一個觸發器,使BirthDate 列有效

正確答案:D

8. 你是一家保險公司的數據庫開發者,公司的保險單信息存儲在一個SQL Server 2000數據庫中,你使用如下所示的腳本為數據庫創建了一個名為Policy 的表:

CREATE TABLE Policy

(

PolicyNumber int NOT NULL DEFAULT (0),

InsuredLastName char (30) NOT NULL,

InsuredFirstName char (20) NOT NULL,

InsuredBirthDate datetime NOT NULL,

PolicyDate datetime NOT NULL,

FaceAmount money NOT NULL,

CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber)

)

當公司賣出一份新的保險單時,此單必須被分配一個唯一的保險單編號,當一個新保險單被錄入時,數據庫必須分配一個新的保險單編號。你該怎麼做?

A. 創建一個INSTEAD OF INSERT觸發器來產生一個新的保險單編號,此編號包括插入到表中數據的保險單編號

B. 創建一個INSTEAD OF UPDATE觸發器來產生一個新的保險單編號,此編號包括插入到表中數據的保險單編號

C. 創建一個AFTER UPDATE觸發器來產生一個新的保險單編號,此編號包括插入到表中數據的保險單編號

D. 用AFTER INSERT 觸發器來代替DEFAULT約束,產生一個新的保險單編號,此編號包括插入到表中數據的保險單編號

正確答案:A

9. 你是某在線書籍零售數據庫的開發人員,客戶使用公司的web 站點來放置書籍訂單。在訂單被錄入後,它們就被插入到BookOrders 數據庫中。在每晚的批處理過程中,訂單的信息轉移到Reports 數據庫中。Reports 數據庫包括一個Order 表和一個LineItem表,Order 表包括關於訂單的基本信息,LineItem 表包括訂單中個別項的信息。Order

表和LineItem 表如下所示:客戶必須使用公司的web 站點來瀏覽存儲在Reports 數據庫中的訂單。客戶應該只能看

到他們自己的訂單,但不能修改這些訂單。訂單的主鍵值和客戶是不相關的,並且是不可見的,你該做什麼?

A. 創建一個視圖來顯示客戶訂單信息

B. 創建一個存儲過程來檢索客戶的訂單信息

C. 創建一個標量型用戶自定義方法來檢索客戶訂單信息

D. 授權客戶對表Order和LineItem的SELECT操作的權限

正確答案:B

10. 你是某公司Sales 數據庫的開發人員,此數據庫包括一個Orders 表。創建這個表的腳本如下所示:

CREATE TABLE Orders

(

OrderID int NOT NULL,

CustomerID char (5) NOT NULL,

OrderDate datetime DEFAULT GETDATE ( ) NULL,

ShippedDate datetime NULL,

Freight money NULL,

ShipName varchar (40) NULL

)

GO

CREATE CLUSTERED INDEX IX_OrderID ON Orders (OrderID)

GO

CREATE NONCLUSTERED INDEX IX_CustomerID ON Orders (CustomerID)

一個應用系統將會按照下面的語句來檢索顧客訂單:

SELECT OrderID, CustomerID, OrderDate

FROM Orders WHERE CustomerID = 『WHITC'

ORDER BY OrderDate DESC

由此產生的查詢執行計劃如下查詢執行計劃所示:查詢執行計劃你想要這個查詢儘可能快地執行,你該做什麼?

A. 在OrderDate列中創建一個非聚簇索引

B. 在OrderDate列中創建一個聚簇索引

C. 改變OrderID列的聚簇索引為非聚簇索引

D. 改變CustomerID列的非聚簇索引,使其包括OrderDate列

正確答案:D

11. 你是一家跨國公司數據庫開發人員,公司在SQL Server 2000 計算機上有一個集中式在線事務處理數據庫。這個數據庫有一個名為Sales 表,包括公司辦事處統一整理過的銷售信息。去年,150,000 多行的數據被添加到Sales 表中,數據庫用戶反映隨著年限的增長,數據庫的性能在平穩地下降。你需要改善Sales 表查詢的性能。在SQL 查詢分析器中你該執行哪個腳本?

A. EXEC sp_updatestats 'resample'

B. CREATE STATISTICS Sales WITH FULLSCAN

C. Sp_autostats 『Sales'

D. UPDATE STATISTICS Sales WITH FULLSCAN ALL

正確答案:A

12. 你是一家保險公司的數據庫開發人員,你被告知數據庫操作例如selects, inserts 和updates 都比一年前剛創建時花費的時間長。以前的開發人員在數據庫創建時給表添加了所需的索引。自從那以後,其他的表和存儲過程被添加到數據庫中。除此之外,很多 查詢不再使用。你想改善數據庫,使其有儘可能快的響應數度。你該做什麼?

A. 對數據庫執行DBCC UPDATEUSAGE語句來更新sysindexes系統表

B. 執行DBCC SHOW_STATISTICS語句找出高密度索引(high-density indexes),刪除這個索引

C. 對工作量(workload)文件運行索引調整嚮導(Index Tuning Wizard),來創建和刪除暗示的索引

D. 使用SQL部署器找出表掃瞄(table scan),並給有表掃瞄的數據表添加索引

正確答案:C

13. 你是某公司SQL Server 2000 數據庫的開發人員,這個數據庫包括一個Sales 表,此表有2 百萬行。Sales 表包括公司所有部門的銷售信息。每個部門通過表中的DepartmentID列進行識別。大多數對表的查詢都是為了查找某個單獨部門的銷售信息,你想提高 這些查詢的I/O 性能。然而,你不想影響對表的訪問,你該怎麼做?

A. 創建一個新表,把經常查找的列移到此表中,將DepartmentID列保留在兩個表中,創建一個原始表和新表的視圖,在新表的連接(join)列添加外鍵(FOREIGN KEY)約束

B. 創建一個新的表,把經常查找的列移到此表中,將DepartmentID列保留在兩個表中,創建一個原始表和新表的視圖,在兩個表的DepartmentID列添加CHECK約束

C. 為每個部門創建一個新的表,把每個部門的銷售信息移到部門表中,為新表的DepartmentID 列添加一個CHECK 約束,為新的表創建一個視圖

D. 為每個部門創建一個新的表,並把每個部門的銷售信息移到部門表中,創建一個新表的視圖,給視圖的DepartmentID 列添加一個CHECK約束

E. 創建一個存儲過程來接收一個部門輸入的參數,使用存儲過程返回Sales表的結果

正確答案:C

14. 你是一家公司的數據庫開發人員,你正在為公司創建一個名為HumanResources的數據庫。這個數據庫包含了員工的檔案和人口統計的信息。公司有 2000個員工,每年的人員流動率為2%,當員工離開公司後,所有關於他的記錄都被保留做審核用,員工的人口統計信息年變化率為9%,你不需要保留人口統 計變化的歷史記錄。人力資源數據庫架構如下的HumanResources Schema所示,下面的腳本將被使用來創建索引。

HumanResources Schema:

ALTER TABLE [dbo]. WITH NOCHECK ADD

CONSTRAINT [pk_Employee] PRIMARY KEY CLUSTERED

( )

WITH FILLFACTOR = 90

GO

ALTER TABLE [dbo]. WITH NOCHECK ADD

CONSTRAINT [dbo]. PRIMARY KEY CLUSTERED

( )

WITH FILLFACTOR = 90

GO

你想保存磁盤空間並最小化擴展數據庫文件的次數。所有的varchar列都是50%的佔用狀況。你該為CREATE DATABASE語句指定哪兩個參數?(選擇兩個正確的答案)

A. SIZE = 1GB

B. SIZE = 1MB

C. SIZE= 2048KB

D. FILEGROWTH = 20

E. FILEGROWTH = 5%

F. FILEGROWTH = 0

正確答案:C, E

15. 你是某公司財務數據庫開發人員,此數據庫包括一個名為Employees的表,Tom是財務部門的一員,Tom的數據庫用戶帳戶被拒絕對 Employees表的Salary和BonusPercentage列擁有SELECT操作的權限。Tom已經被授權對表的所有其他列進行SELECT 操作。Tom現在要求能夠訪問Employees表中的所有數據。你該做什麼?

A. 廢除Tom的數據庫用戶帳戶對Employees表的Salary和BonusPercentage列有SELECT操作的權限

B. 把Tom添加到db_datareader數據庫角色中

C. 把Tom添加到db_ accessadmin數據庫角色中

D. 授予Tom的數據庫用戶帳戶對Employees表的Salary和BonusPercentage列有SELECT操作的權限

正確答案:D

16. 你是一個提供電話在線目錄公司的數據庫開發人員。名為PhoneNumbers 的表如下所示:

在表中裝載了100000 個名字後,你使用下面的腳本來創建索引:

ALTER TABLE [dbo]. [PhoneNumbers] WITH NOCHECK ADD

CONSTRAINT[PK_PhoneNumbers]PRIMARY KEY CLUSTERED (

[FirstName],

[LastName],

) ON [PRIMARY]

GO

CREATE UNIQUE INDEX

[IX_PhoneNumbers] ON [dbo].[PhoneNumbers](

[PhoneNumberID]

) ON [PRIMARY]

GO

你在測試數據庫的性能時,發現如下這樣的查詢執行時間很長:

返回居住在某個特定城市,last name以『W'開頭的所有人的姓名和電話你該如何改善這些類型的查詢處理性能?(選擇兩個可行的答案)

A. 改變主鍵約束,使FirstName列被鏈接到LastName 列

B. 在City列中添加非聚簇索引

C. 在AreaCode, Exchange和Number列上添加非聚簇索引

D. 把unique索引從PhoneNumberID列中移除

E. 改變主鍵約束為非聚簇索引

F. 在SQL查詢分析器中執行 UPDATE STATISTICS FULLSCAN ALL 語句

正確答案:A, B

17. 你是SQL Server 2000 數據庫開發者,你正計劃添加新的索引,刪除一些索引,並改變其他索引為復合索引和覆蓋索引。由于歸檔要求,你必須生成一個報表,此報表顯示了你做出修改前後查詢所用到的索引。你該怎麼做?

A. 在SQL查詢分析器中執行每個查詢,並使用SHOWPLAN_TEXT選項。將輸出作為報表

B. 在SQL查詢分析器中執行每個查詢,並使用Show Execution Plan選項。將輸出作為報表

C. 對工作量文件(Workload file)執行索引調整嚮導(Index Tuning Wizard),將輸出作為報表

D. 執行DBCC SHOW_STATISTICS語句,將輸出作為報表

正確答案:A

18. 你是某公司SQL Server 2000 數據庫的開發人員,這個數據庫包括一個名為Invoices的表,你是db_owner 角色的一員。Eric 是HR 數據庫角色的一員,她為Invoices 表創建了Trey_Research_UpdateInvoices 觸發器。Eric 現在離職了,因此這個觸發器也不再需要。你在Sales 數據庫中執行了以下的語句來刪除此觸發器:

DROP TRIGGER Trey_Research_UpdateInvoices

然後你得到了如下的錯誤信息:

Cannot drop the trigger 『Trey_Research_UpdateInvoices', because it does not

exist in the system catalog.

在你能夠刪除觸發器前你該做什麼?

A. 把你的登錄名添加到HR數據庫角色中

B. 在DROP TRIGGER語句中用觸發器所有者來限制觸發器名字

C. 在執行DROP TRIGGER語句之前禁用觸發器

D. 在DROP TRIGGER語句中定義觸發器數量

E. 在sysobjects和syscomments系統表中移除觸發器文本

正確答案:B

19. 你是一家公司的數據庫開發人員,該公司正在進行一項消費者音樂喜好的電話調查,當調查參與者的調查結果被反饋回來時,這些調查信息就會被插入到表 SurveyData 中。當所有的調查信息都收回後,調查結果的概要就產生了。你曾經被要求通過取樣每五行的調查信息來創建一個概要。你需要儘可能快的產生概要,你該怎麼做?

A. 使用游標來檢索所有的調查數據,使用FETCH RELATIVE 5語句從游標中選擇概要數據

B. 使用SELECT INTO語句來檢索調查數據到臨時表中,使用SELECT TOP 1語句從臨時表中檢索第一行

C. 設置查詢的行數為5,使用一個SELECT語句來檢索和總結調查數據

D. 使用SELECT TOP 5語句來檢索並總結調查數據

正確答案:A

20. 你是一家公司的數據庫開發人員,你正在重建公司的sales數據庫。此數據庫包括一個客戶信息的表Customers,此表包括一個名為Country 的character字段,此字段包括客戶所在國家的名字。你創建了一個新的名為Country的表,用來創建Customers表和Country表的 腳本如下所示:

CREATE TABLE dbo.Country

(

CountryID int IDENTITY(1,1) NOT NULL,

CountryName char(20) NOT NULL,

CONSTRAINT PK_Country PRIMARY KEY CLUSTERED (CountryID)

)

CREATE TABLE dbo.Customers

(

CustomerID int NOT NULL,

CustomerName char(30) NOT NULL,

Country char(20) NULL,

CONSTRAINT PK_Customers PRIMARY KEY CLUSTERED (CustomerID)

)

你必須儘可能快的把有關國家的信息從Customers 表移動到新的Country表,你該使用哪個腳本?

A. INSERT INTO Country (CountryName)

SELECT DISTINCT Country

FROM Customers

B. SELECT (*) AS ColID, c1.Country

INTO Country

FROM (SELECT DISTINCT Country FROM Customers)AS c1,

(SELECT DISTINCT Country FROM Customers) AS c2,

WHERE c1.Country >=c2.Country

GROUP BY c1.Country ORDER BY 1

C. DECLARE @Country char (20)

DECLARE cursor_country CURSOR

FOR SELECT Country FROM Customers

OPEN cursor_country

FETCH NEXT FROM cursor_country INTO @Country

WHILE (@@FETCH_STATUS <> -1)

BEGIN

If NOT EXISTS (SELECT CountryID

FROM Country

WHERE CountryName = @Country)

INSERT INTO Country (CountryName) VALUES (@Country)

FETCH NEXT FROM cursor_country INTO @Country

END

CLOSE cursor_country

DEALLOCATE cursor_country

D. DECLARE @SQL varchar (225)

SELECT @SQL = 『bcp 「SELECT ColID = COUNT(*), c1. Country' +

FROM (SELECT DISTINCT Country FROM Sales..Customers) AS c1, ' +

(SELECT DISTINCT Country FROM Sales..Customers) AS c2 ' +

WHERE c1.Country >= c2.Country' +

GROUP BY c1.Country ORDER BY 1』 +

query out c:\country.txt -c'

EXEC master..xp_cmdshell @SQL, no_output

EXEC master..xp_cmdshell 『bcp Sales..Country in c:\country. Txt-c',

no_output

正確答案:C

21. 你正在為一個基於web的訂票應用系統設計數據庫。對任何一個事件都應當有500張或更多的票。應用系統的大部分用戶在他們購買票之前會瀏覽少於50張的 可訂的票。然而,一個用戶必須能夠瀏覽可訂票的整個列表。當用戶瀏覽訂票列表的時候,列表需要更新來反映已經賣給其他用戶的票。你需要為用戶設計一個方法 來瀏覽和購買可訂的票。你該怎麼做?

A. 使用一個捲動式靜態游標來檢索列表中的票,使用游標定位更新來購買票

B. 使用一個捲動式動態游標來檢索列表中的票,使用游標定位更新來購買票

C. 使用一個存儲過程來檢索列表中的票,使用另外一個存儲過程來購買票

D. 使用用戶定義的方法來檢索列表中的票,使用另外一個存儲過程來購買票

正確答案:B

22. 你是一名數據庫諮詢顧問,目前你被一家本地狗飼養場僱用來開發數據庫。這個數據庫將被使用來存儲關於飼養者的狗的信息。你使用下面的腳本創建了一個名為Dogs的表:

CREATE TABLE[dbo].[Dogs]

(

[DogID] [int] NOT NULL,

[BreedID] [int] NOT NULL,

[DateofBirth] [datetime] NOT NULL,

[WeightAtBirth] [decimal] (5, 2) NOT NULL,

[NumberOfSiblings] [int] NULL,

[MotherID] [int] NOT NULL,

[FatherID] [int] NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Dogs] WITH NOCHECK ADD

CONSTRAINT [PK_Dogs]PRIMARY KEY CLUSTERED

(

[DogID]

) ON [PRIMARY]

GO

你必須確保每條狗的MotherID和FatherID列都有有效的值。你想在保證最小化磁盤I/O的條件下執行這個規則。你該做什麼?

A. 在Dogs表上創建一個AFTER INSERT觸發器,使其回滾MotherID或FatherID列事務無效

B. 在MotherID和FatherID列上創建一個表級CHECK約束

C. 創建兩個FOREIGN KEY約束:一個在MotherID列,一個在FatherID列;指定每個約束引用DogID列

D. 創建一個規則並把它和MotherID列綁定,把同樣規則和FatherID列綁定

正確答案:C

23. 你是某電力公司的數據庫開發人員,當客戶在聲明的預定日期內沒有支付帳單金額,此金額就要每天增加1%直到支付了為止,存儲過程如下所示:

每次存儲過程執行沒有錯誤,它就會報告0 個帳單超期。然而,你發現金額正在被這個存儲過程更新,你該如何糾正這個問題?

A. 用下面的語句代替存儲工程中的第12-17行:Return @@ROWCOUNT

B. 用下面的語句代替存儲工程中的第5-6行:DECLARE @count int

用下面的語句代替存儲工程中的第12-17行:SET @Count = @@ROWCOUNT

If @@ERROR = 0

Return @Count

Else

Return –1

C. 用下面的語句代替存儲工程中的第5行:DECLARE @Err int, @Count int

用下面的語句代替存儲工程中的第12-17行:

SELECT @Err = @@ERROR, @Count = @@ROWCOUNT

IF @Err = 0

Return @Count

Else

Return @Err

D. 用下面的語句代替存儲工程中的第5行:Return @@Error

E. 用下面的語句代替存儲工程中的第5行:DECLARE @Err int, @Count int

用下面的語句代替存儲工程中的第9行:SET Balance = Balance * 1.01, @Count = Count (*)

用下面的語句代替第15行:Return @Count

正確答案:C

24. 你是某在線電子公司數據庫開發人員,公司產品目錄包含在一個名為Products的表中。Products表在正常工作時間經常被訪問。對Products表的修改被寫入PendingProductUpdate表中,這些表如下所示:

PendingProductUpdate表下班後將用來更新Products表。數據庫服務器運行SQL Server2000並設置為8.0兼容模式。你需要創建一個腳本來更新Products表,你該採用哪個腳本?

A. UPDATE Products

SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice

FROM Products p1, PendingProductUpdate p2

WHERE p1.ProductID= p2.ProductID

GO

TRUNCATE TABLE PendingProductUpdate

GO

B. UPDATE Products p1

SET [Description] = p2.[Description], UnitPrice = p2.UnitPrice

FROM Products, PendingProductUpdate p2

WHERE p1.ProductID= p2.ProductID

GO

TRUNCATE TABLE PendingProductUpdate

GO

C. UPDATE Products p1

SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice

FROM (SELECT [Description], UnitPrice

FROM PendingProductUpdate p2

WHERE p1.ProductID= p2.ProductID)

GO

TRUNCATE TABLE PendingProductUpdate

GO

D. UPDATE p1

SET p1.[Description] = p2.[Description], p1.UnitPrice = p2.UnitPrice

FROM Products p1, PendingProductUpdate p2

WHERE p1.ProductID= p2.ProductID

GO

TRUNCATE TABLE PendingProductUpdate

正確答案:D

25. 你是某銷售組織的數據庫開發人員,你的數據庫有一個名為Sales表,此表包括了來自銷售人員的銷售訂單概要信息。銷售經理要求你創建一個銷售額排在前20位的銷售人員報表,你該使用哪個查詢來完成這個任務

A. SELECT TOP 20 PERCENT LastName, FirstName, SUM (OrderAmount) AS ytd

FROM sales

GROUP BY LastName, FirstName

ORDER BY 3 DESC

B. SELECT LastName, FirstName, COUNT(*) AS sales

FROM sales

GROUP BY LastName, FirstName

HAVING COUNT (*) > 20

ORDER BY 3 DESC

C. SELECT TOP 20 LastName, FirstName, MAX(OrderAmount) AS ytd

FROM sales

GROUP BY LastName, FirstName

ORDER BY 3 DESC

D. SELECT TOP 20 LastName, FirstName, SUM (OrderAmount) AS ytd

FROM sales

GROUP BY LastName, FirstName

ORDER BY 3 DESC

E. SELECT TOP 20 WITH TIES LastName, FirstName, SUM (OrderAmount) AS ytd

FROM sales

GROUP BY LastName, FirstName

ORDER BY 3 DESC

正確答案:E

26. 你是一家玩具公司的數據庫開發人員,你已經創建了一個訂單錄入數據庫,包括兩個如下所示的表:用戶把訂單錄入到一個錄入應用系統中,當一個新的訂單被錄入 時,它的數據被保存在訂單錄入數據庫的Order 和LineItem 表中。你必須確保整個訂單成功保存,你該使用哪個腳本?

A. BEGIN TRANSACTION Order

INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate)

INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price)

SAVE TRANSACTION Order

B. INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate)

INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price)

IF (@@Error = 0)

COMMIT TRANSACTION

ELSE

ROLLBACK TRANSACTION

C. BEGIN TRANSACTION

INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate)

IF (@@Error = 0)

BEGIN

INSERT INTO LineItem

VALUES (@ItemID, @ID, @ProductID, @Price)

IF (@@Error = 0)

COMMIT TRANSACTION

ELSE

ROLLBACK TRANSACTION

END

ELSE

ROLLBACK TRANSACTION

END

D. BEGIN TRANSACTION

INSERT INTO Order VALUES (@ID, @CustomerID, @OrderDate)

IF (@@Error = 0)

COMMIT TRANSACTION

ELSE

ROLLBACK TRANSACTION

BEGIN TRANSACTION

INSERT INTO LineItem VALUES (@ItemID, @ID, @ProductID, @Price)

IF (@@Error = 0)

COMMIT TRANSACTION

ELSE

ROLLBACK TRANSACTION

正確答案:C

27. 你是某在線經紀公司數據庫的開發人員,客戶擁有的股票價格由SQL Server 2000數據庫來進行維護。為了允許對股票價格歷史的跟蹤,所有股票價格的更新必須有日誌記載。為了幫助糾正關於價格更新的問題,任何發生在更新期間的錯 誤也必須載入日誌。當錯誤被載入日誌,識別哪只股票產生錯誤的信息必須返回給客戶應用系統。你必須確保正確的條件記入日誌並產生正確的信息。你該使用哪段 程序?

A. CREATE PROCEDURE UpdateStockPrice @StockID int, @Price decimal

AS BEGIN

DECLARE @Msg varchar(50)

UPDATE Stocks SET CurrentPrice = @Price

WHERE StockID = @ StockID

AND CurrentPrice <> @ Price

IF @@ERROR <> 0

RAISERROR (『Error %d occurred updating Stock %d.』, 10, 1, @@ERROR, @StockID)

WITH

LOG

IF @@ROWCOUNT > 0

BEGIN

SELECT @Msg = 『Stock' + STR (@StockID) + 『updated to' + STR (@Price) +

.』

EXEC master. . xp_LOGEVENT 50001, @Msg

END

END

B. CREATE PROCEDURE UpdateStockPrice @StockID int, @Price decimal

AS BEGIN

UPDATE Stocks SET CurrentPrice = @Price

WHERE StockID = @ StockID

AND CurrentPrice <> @ Price

IF @@ERROR <> 0

PRINT 『ERROR' + STR(@@ERROR) + 『occurred updating Stock' +STR (@StockID)+

.』

IF @@ROWCOUNT > 0

PRINT 『Stock' + STR (@StockID) + 『updated to' + STR (@Price) + 『.』

END

C. CREATE PROCEDURE UpdateStockPrice @StockID int, @Price decimal

AS BEGIN

DECLARE @Err int, @RCount int, @Msg varchar(50)

UPDATE Stocks SET CurrentPrice = @Price

WHERE StockID = @ StockID

AND CurrentPrice <> @ Price

SELECT @Err = @@ERROR, @RCount = @@ROWCOUNT

IF @Err <> 0

BEGIN

SELECT @Msg = 『Error' + STR(@Err) + 『occurred updating Stock' + STR

(@StockID) + 『.』

EXEC master..xp_logevent 50001, @Msg

END

IF @RCOUNT > 0

BEGIN

SELECT @Msg = 『Stock' + STR (@StockID) + 『updated to' + STR (@Price) +

.』

EXEC master. . xp_LOGEVENT 50001, @Msg

END

END

D. CREATE PROCEDURE UpdateStockPrice @StockID int, @Price decimal AS BEGIN

DECLARE @Err int, @RCount int, @Msg varchar (50)

UPDATE Stocks SET CurrentPrice = @Price

WHERE StockID = @StockID

AND CurrentPrice <> @Price

SELECT @Err = @@ERROR, @RCount = @@ROWCOUNT

If @Err <> 0

RAISEERROR ( 『Error %d occurred updating Stock %d.』, 10, 1, @Err, @StockID)

WITH LOG

If @RCount > 0

BEGIN

SELECT @Msg = 『Stock' + STR (@StockID) + 『update to' + STR (@Price) +

.』

EXEC master. . xp_logevent 50001, @Msg

END

END

正確答案:D

28. 你是某銀行的數據庫開發人員,你正在實現一個程序,把數據載入到SQL Server 2000數據庫。作為這個程序的一部分,數據暫時被載入到表Staging。當數據加載程序完成後,此數據就從這個表中被刪除,你不需要恢復這個刪除的數 據。你需要確保Staging表的數據儘可能快的被刪除。你該做什麼?

A. 使用 DELETE 語句把數據從表中移除

B. 使用TRUNCATE TABLE語句把數據從表中移除

C. 使用DROP TABLE語句把數據從表中移除

D. 使用updateable游標來訪問和移除表中每行數據

正確答案:B

29. 你是某保險公司的數據庫開發人員,公司有一個名為Policies 的數據庫。你已經為數據庫設計了一個存儲過程,它將使用游標來處理大量結果。使用這個存儲過程的分析家反映,在數據顯示給他們之前有一個很長的初始化延 時。延時之後,性能正常。只有執行數據分析的數據分析家使用Policies 數據庫。你想改善存儲過程的性能,你該使用

哪個腳本?

A. EXEC sp_configure 『cursor threshold', 0

B. EXEC sp_dboption 『Policies' SET CURSOR_CLOSE_ON_COMMIT ON

C. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

D. ALTER DATABASE Policies SET CURSOR_DEFAULT LOCAL

正確答案:A

30. 你是一家書店的數據庫開發人員,你正在設計一個存儲過程來處理XML文檔。你使用下列的腳本來創建這個存儲過程:

CREATE PROCEDURE spParseXML (@xmlDocument varchar(1000)) AS

DECLARE @docHandle int

EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument

SELECT *

FROM OPENXML (@docHandle, 『/ROOT/Category/Product',2)

WITH (ProductID int,

CategoryID int,

CategoryName varchar (50),

[Description] varchar (50))

EXEC sp_xml_removedocument @docHandle

你執行這個存儲過程並使用一個XML文檔作為輸入文檔,XML文檔如下所示:你接收到如下所示的輸出:

你需要替換存儲過程的主體,你該採用哪個腳本?

A. SELECT *

FROM OPENXML (@docHandle, 『/ROOT/category/Product', 1)

WITH (ProductID int,

CategoryID int,

CategoryName varchar(50),

[Description] varchar (50))

B. SELECT *

FROM OPENXML (@docHandle, 『/ROOT/category/Product', 8)

WITH (ProductID int,

CategoryID int,

CategoryName varchar(50),

[Description] varchar (50))

C. SELECT *

FROM OPENXML (@docHandle, 『/ROOT/category/Product', 1)

WITH (ProductID int,

CategoryID int,

CategoryName varchar(50), 『@CategoryName',

[Description] varchar (50))

D. SELECT *

FROM OPENXML (@docHandle, 『/ROOT/category/Product', 1)

WITH (ProductID int,

CategoryID int 『../@CategoryID',

CategoryName varchar(50), 『../@CategoryName',

[Description] varchar (50))

正確答案:D

31. 你正在為人力資源部門設計一個腳本來報告年薪信息。這裡有三種類型的員工,一些是賺小時工資,一些是掙固定薪水,還有一些是按照銷售支付佣金。這些數據記錄在表Wages中,此表使用以下的腳本創建的:

CREATE TABLE Wages

(

emp_id tinyint identity,

hourly_wage decimal NULL,

salary decimal NULL,

commission decimal NULL,

num_sales tinyint NULL

)

一個員工能夠有一種薪水類型的信息,你必須適當的匯報每個員工的年薪信息,你該使用哪個腳本?

A. SELECT CAST (hourly_wage * 40 * 52 +

salary +

commission * num_sales AS MONEY) as YearlyWages

FROM Wages

B. SELECT CAST (COALESCE (hourly_wage * 40 * 52,

Salary,

commission * num_sales) AS MONEY) as YearlyWages

FROM Wages

C. SELECT CAST (CASE

WHEN((hourly_wage,) IS NOTNULL) THEN hourly_wage * 40 * 52

WHEN(NULLIF(salary,NULL)IS NULL)THEN salary

ELSE commission * num_sales

END

AS MONEY)

As YearlyWages

FROM Wages

D. SELECT CAST(CASE

WHEN (hourly_wage IS NULL)THEN salary

WHEN (salary IS NULL)THEN commission*num_sales

ELSE commission * num_sales

END

AS MONEY)

As YearlyWages

FROM Wages

正確答案:B

32. 你正在為一家玩具公司設計數據庫,你回顧了數據庫設計圖,如下所示:你想加快查詢響應速度同時最小化冗餘數據,你該怎麼做?

A. 創建一個新表名為CustomerContact,添加CustomerID, ContactName和Phone列到此表中

B. 在OrderDetails表中創建一個新的復合PRIMARY KEY約束,約束中包括OrderID,ProductID和CustomerID列

C. 從OrderDetails表中移除PRIMARY KEY約束,使用IDENTITY列為OrderDetails表創建一個代理鍵

D. 從OrderDetails表中移除CustomerID列

E. 從OrderDetails表中移除Quantity列,在Orders表中添加一個Quantity列,

正確答案:D

33. 你是一家保險公司的數據庫開發人員,公司有一個總辦事處和18 個地區辦事處,每個辦事處都有一個SQL Server 2000 數據庫。地方辦事處和總辦事處之間用一個高速網絡連接。總辦事處的數據庫被用來統一來自各地區辦事處數據庫的信息。總辦事處數據庫中的數據表水平的劃分。 地區辦事處的所處位置被用來作為總辦事處數據庫主鍵的一部

分。你正在設計物理複製模型,你該做什麼?

A. 配置總辦事處計算機為發佈訂閱服務器

B. 配置總辦事處計算機是一個用遠程分發服務的發布服務器

C. 配置總辦事處計算機為一個中心發佈服務器,地區辦事處計算機為訂閱服務器

D. 配置地區辦事處計算機為分發服務器,總辦事處計算機為中心訂閱服務器

正確答案:D

34. 你是某進口公司的數據庫開發人員,此公司在SQL Server 2000數據庫中跟蹤它的訂單信息。此數據庫包括有訂單詳細信息的兩個表,表的名字分別為Order和LineItem。用來創建這些數據表的腳本如下所示:

CREATE TABLE dbo.Order

(

OrderID int NOT NULL,

CustomerID int NOT NULL,

OrderDate datetime NOT NULL,

CONSTRAINT DF_Order_OrderDate DEFAULT (getdate())FOR OrderDate,

CONSTRAINT PK_Order PRIMARY KEY CLUSTERED (OrderID)

)

CREATE TABLE dbo.LineITEM

(

ItemID int NOT NULL,

OrderID INT NOT NULL,

ProductID int NOT NULL,

Price money NOT NULL,

CONSTRAINT PK_LineITEM PRIMARY KEY CLUSTERED (ItemID),

CONSTRAINT FK_LineITEM_Order FOREIGN KEY (OrderID)

REFERENCES dbo.Order (OrderID)

)

公司審核人員發現2000年7月1號的所有定購產品的輸入價格都比實際的多了10美元,你要儘可能快的糾正數據庫中的數據,你該使用哪個腳本?

A. UPDATE l

SET Price = Price – 10

FROM LineItem AS l INNER JOIN [Order] AS o

ON l.OrderID = o.OrderID

WHERE o.OrderDate >= 『6/1/2000』

AND o.OrderDate < 『6/2/2000』

B. UPDATE l

SET Price = Price – 10

FROM LineItem AS l INNER JOIN [Order] AS o

ON l.OrderID = o.OrderID

WHERE o.OrderDate = 『6/1/2000』

C. DECLARE @ItemID int

DECLARE items_cursor CURSOR FOR

SELECT l.ItemID

FROM LineItem AS l INNER JOIN [Order] AS o

ON l.OrderID = o.OrderID

WHERE o.OrderDate >= 『6/1/2000』

AND o.OrderDate < 『6/1/2000』

FOR UPDATE

OPEN items_cursor

FETCH NEXT FROM items_cursor INTO @ItemID

WHILE @@FETCH_STATUS = 0

BEGIN

UPDATE LineItem SET Price = Price – 10

WHERE CURRENT OF items_cursor

FETCH NEXT FROM items_cursor INTO @ItemID

END

CLOSE items_cursor

DEALLOCATE items_cursor

D. DECLARE @OrderID int

DECLARE order_cursor CURSOR FOR

SELECT ordered FROM [Order]

WHERE OrderDate = 『6/1/2000』

OPEN order_cursor

FETCH NEXT FROM order_cursor INTO @OrderID

WHILE @@FETCH_STATUS = 0

BEGIN

UPDATE LineItem SET Price = Price – 10

WHERE OrderID= @OrderID

FETCH NEXT FROM order_cursor INTO @OrderID

END

CLOSE order_cursor

DEALLOCATE order_cursor

正確答案:A

35. 你是一個研究機構的數據庫開發人員,你正在設計一個SQL Server 2000 的數據庫,此數據庫將會和一個應用系統一起分配給許多公司。你在包含了機密信息的數據庫中創建了幾個存儲過程,你想阻止這些公司瀏覽這些機密信息。你該怎麼做?

A. 從syscomments系統表中移除存儲過程正文

B. 給存儲過程的正文加密

C. 拒絕公共角色對syscomments 系統表的SELECT權限

D. 拒絕公共角色對sysobjects系統表的SELECT權限

正確答案:B

36. 你是某電話推銷公司的數據庫開發人員,你正在設計一個名為CustomerContacts的數據庫。這個數據庫將頻繁的更新,這個數據庫將會達到1GB 的大小。你的目標是使數據庫達到最佳的可能性能,目前你的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

37. 你是某公司SQL Server 2000數據庫的開發者,另一位開發者Andrea需要修改數據庫中現有的幾個視圖。然而,你想要阻止她瀏覽或修改數據表中的數據。目前,Andrea只擁有Public數據庫角色,你該做什麼?

A. 添加Andrea到db_owner數據庫角色中

B. 添加Andrea 到db_ddladmin數據庫角色中

C. 授予Andrea創建視圖( CREATE VIEW)權限

D. 授予Andrea 修改視圖(ALTER VIEW)權限

E. 授予Andrea 對表的引用(REFERENCES)權限

正確答案:B

38. 你是一家運輸公司的數據庫開發人員,你有一個SQL Server 2000數據庫來存儲訂單的信息,此數據庫包含名為Order和OrderDetails的表,這個數據庫部署的計算機有四個容量為9GB的磁盤驅動器可 用作數據存儲,這台計算機有兩個磁盤控制器,每個磁盤控制器控制兩個磁盤驅動器。Order和OrderDetail表經常被結合查詢。你需要調整數據庫

的性能,你該怎麼做?(選擇兩個可行的答案)

A. 為每個磁盤驅動器創建一個新的文件組

B. 在與非聚簇索引獨立的文件組中為Order表創建聚簇索引

C. 在一個文件組中為OrderDetail表存儲數據和聚簇索引並在另一個文件組中創建非聚簇索引

D. 在一個文件組中創建Order表和它的索引,並在另一個文件組中創建OrderDetail表和它的索引

E. 創建兩個文件組,每個文件組包括和同一個控制器連接的兩個磁盤驅動器

正確答案:D, E

39. 你是數據庫Inventory的開發人員,你已經有一個你需要創建的報表的列表,這些報表將同時運行,你寫了創建每個報表的查詢代碼,基於這些查詢,你設計並創建了數據庫表的索引。你需要確保你已經創建了有用的索引,你該怎麼做?

A. 創建一個SQL 部署(Profiler)跟蹤,並使用對象事件(Objects event)類

B. 對包含了報表中使用的查詢的工作量文件運行索引調整嚮導(Index Tuning Wizard)

C. 運行系統監控器,並使用SQLServer:Access方法計數

D. 對SQL查詢分析器(Query Analyzer)中的表執行查詢操作,並使用選項SHOWPLAN_TEXT

正確答案:B

40. 你是某進口商數據庫的開發人員,你正在為公司的SQL Server 2000數據庫創建一個名為Orders的表。每個訂單都包括OrderID,OrderDate, CustomerID, ShipperID和ShipDate字段,取走訂單的客戶服務代表必須在訂單取走時,輸入OrderDate,CustomerID和 ShipperID信息。OrderID由數據庫自動產生並且必須是唯一的。訂單只能從現存的客戶中獲取,發貨人只能從發貨人現有集中選擇。當客戶服務代 表完成了訂單之後,此訂單被發送到配送部門做最終的處理。當定購的東西運出,配送部門輸入運貨日期。你該採用哪個腳本來創建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

41. 你正在設計你公司的Sales數據庫,這個數據庫將被三個客戶應用系統使用。查詢訪問數據庫的用戶是Microsoft Windows 2000組的當前成員。根據用戶對數據庫訪問的需求,他們被安置在Windows 2000組中。客戶應用系統將通過每個應用系統現有的角色來連接Sales數據庫,每個應用系統角色被分配一個密碼。所有用戶只能通過客戶應用系統來

訪問Sales數據庫,數據庫沒有授予權限,你該做什麼?

A. 給每個Windows 2000組分配適當的權限

B. 給每個應用系統角色分配適當的權限

C. 給Windows 2000 組分配適當的應用系統角色

D. 為用戶提供應用系統角色的口令

正確答案:B

42. 你是一家玩具公司的數據庫開發人員,公司的銷售信息存儲在SQL Server 2000數據庫中,這個數據庫包括一個名為Orders的表。你想把Orders表中的舊有數據移動到一個存檔的表中。執行這個過程之前,你想知道查詢優 化器如何處理INSERT語句。你在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 <>

你接收到以下的錯誤信息:

Invalid object name 『Archived_Orders_1995_1999』

你該怎麼做來解決這個問題?

A. 用所有者的名字來限定Archived_Orders_1995_1999表的名字

B. 請求CREATE TABLE權限

C. 在你執行SET SHOWPLAN_TEXT ON語句之前創建Archived_Orders_1995_1999表

D. 改變表的名字為ArchivedOrders

正確答案:C

43. 你是棒球隊統計信息數據庫的開發人員,這些統計信息存儲在名為Statistics 的數據庫中。每個隊的隊員都錄入到Statistics 數據庫中名為Rosters 的表裡。用來創建這個Rosters 表的腳本如下所示:每個棒球隊任何時候在Rosters 裡最多有24 個隊員。你需要確保一個隊中的成員數總不會超過最大數,你該做什麼?

A. 在Rosters表中創建觸發器來確認數據有效

B. 創建一個使數據有效的規則

C. 創建一個UPDATE視圖,在它的定義中包括WITH CHECK OPTION子句

D. 在Rosters表中添加一個CHECK約束使數據有效

正確答案:A

44. 你是一家玩具公司的數據庫開發人員,公司用一個SQL Server 2000 數據庫來跟蹤公司的庫存。你在數據庫索引中執行了幾個查詢和存儲過程來支持已經創建的查詢,隨著庫存目錄條款數的增加,一些存儲過程的執行時間也明顯增 加,其他一些訪問數據庫中相同信息的查詢和存儲過程執行時間則沒有增加。你必須恢復這些運行緩慢的存儲過程的性能,使其保持原來的執行所需時間,你該做什 麼?

A. 始終使用WITH RECOMPILE選項來執行運行緩慢的存儲過程

B. 為每個被運行緩慢的存儲過程訪問的表執行UPDATE STATISTICS語句

C. 為每個運行緩慢的存儲過程執行sp_recompile系統存儲過程

D. 為每個被運行緩慢的存儲過程訪問的表執行DBCC REINDEX語句

正確答案:C

45. 你是銷售公司數據庫開發者,你已經設計了一個季度銷售視圖。這個視圖結合了幾個表並計算了總計信息,你給視圖創建了一個unique索引,你想提供參數化查詢來訪問包含在你索引視圖中的數據。輸出將會在其他SELECT列表中使用。你該如何完成這個目標?

A. 使用ALTER VIEW語句在視圖定義中添加參數值

B. 創建一個存儲過程來接受作為輸入的參數並用結果集返回一個行集(rowset)

C. 創建一個標量用戶定義函數來接受作為輸入的參數

D. 創建一個內聯用戶定義函數來接受作為輸入的參數

正確答案:C

46. 你是公司人力資源數據庫的開發人員,這個數據庫包括一個名為Employee的表,此表包括機密的身份證號碼和薪水。這個表還包括其他一些非機密的信息, 比如員工名字和住址。你需要使所有Employee表中非機密信息能夠以XML格式被外部應用系統獲得。外部應用系統必須指定精確的XML數據格式。你還 需要在外部應用系統中隱藏機密信息。你

該怎麼做?

A. 創建一個存儲過程以XML格式返回Employee表中的非機密信息

B. 創建一個用戶自定義函數以XML格式返回Employee表中的非機密信息的行集

C. 創建一個僅包含Employee表的非機密信息視圖,給予外部應用系統提交對視圖查詢的權限

D. 在表Employee中設置列級權限來阻止外部應用系統瀏覽機密列,給予外部應用系統提交對表查詢的權限

正確答案:C

47. 你是某IT 諮詢公司數據庫開發人員,你正在設計一個數據庫來記錄潛在顧問的信息。你為數據庫創建了一個名為CandidateSkills 的表,此表結構如下圖所示:你該如何獨特地鑑別每個顧問的技能?

A. 在CandidateID列創建一個PRIMARY KEY(主鍵)約束

B. 在CandidateID和DateLastUsed列創建一個PRIMARY KEY(主鍵)約束

C. 在CandidateID和SkillID列創建一個PRIMARY KEY(主鍵)約束

D. 在CandidateID,SkillID和DateLastUsed列創建一個PRIMARY KEY(主鍵)約束

正確答案:C

48. 你正在為一家公司設計一個inventory 和shipping 數據庫。你創建的本地數據庫設計圖如下所示:你必須確保維持數據庫參照完整性(referential integrity)。你該為你的設計應用哪三種類型的約束?(選擇所有可行的答案)

A. 為Products表創建一個參照OrderDetails表的外鍵(FOREIGN KEY)約束

B. 為Products表創建一個參照Suppliers表的外鍵(FOREIGN KEY)約束

C. 為Orders表創建一個參照OrderDetails表的外鍵(FOREIGN KEY)約束

D. 為OrderDetails表創建一個參照Order表的外鍵(FOREIGN KEY)約束

E. 為OrderDetails表創建一個參照Products表的外鍵(FOREIGN KEY)約束

F. 為Suppliers表創建一個參照Products表的外鍵(FOREIGN KEY)約束

正確答案:B, D, E

49. 你是某食品批發商數據庫開發人員。每週公司都會完成來自不同的客戶的訂單,通常,每個客戶每週都會定購相同數量的某一產品。有時候,客戶定購某一產品的數 量比客戶通常定購的數量明顯少。每個訂單的信息都存儲在表Invoice 中,此表位於SQL Server2000 數據庫中,用來創建這個表的腳本如下所示:你想要識別這些非普通訂單的所有模式,為此,你需要為每個客戶製作一個發貨單列表,其中的發貨數量比通常發貨單 數量要少。你該使用哪個查詢語句?

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 <>

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 <>

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

50. 你是SQL Server 2000 數據庫開發人員,數據庫採用默認配置,訪問數據庫的用戶數量上個月已經從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部署器來捕獲死鎖事件

C. 使用系統監控器來監控鎖請求和死鎖

D. 執行sp_configure系統存儲過程來增加同時連接SQL服務器的用戶數量

正確答案:B