【文章內(nèi)容簡介】
rstName Varchar(20) LastName Varchar_(20) Picture Varbinary(max) Address1 Varchar(30) Address2 Varchar(30) City Varchar(30) StateProvince Char(2) PostalCode Varchar(10) CountryCode Char(2) 你使用以下 TransactSQL 語句創(chuàng)建一個名為 v_Customer 的視圖。 CREATE VIEW v_Customer AS SELECT CustomerID, CompanyName, FirstName, LastName, Picture FROM Customers。 你想要在 v_ Customer 視圖中創(chuàng)建一索引。在創(chuàng)建索引前,還需要修改此 TransactSQL 語句。 應采取以下哪兩項舉措?(每項正確答案代 表方案的一部分。選兩項。) A. 將 Picture 列改為 image 數(shù)據(jù)類型。 B. 表名包含模式名。 C. 包含 WITH SCHEMABINDING 語句 D. 在 Select 語句中用 *符號選擇所有的列 解析: P273 創(chuàng)建索引視圖存在多種相關(guān)要求和限制,主要包括:。 必須使用 SCHEMABINDING 選項,即架構(gòu)綁定;視圖中所引用的表和函數(shù)必須通過兩段式名稱引用,即模式名(架構(gòu)名) 答案: B, C 2( 4) 你需要在 SQL Server 2022 數(shù)據(jù)庫中創(chuàng)建一個連接客 戶表與訂單表的視圖。同時要確保底層數(shù)據(jù)表方案的更改 不會影響到視圖 。你想要以可能的 最小開銷量 達成此目標,你要怎樣做? A. 在數(shù)據(jù)表中創(chuàng)建 CHECK 約束 B. 創(chuàng)建一個 DDL 觸發(fā)器,若改動對視圖中的列產(chǎn)生了影響,它將回滾到更改之前的數(shù)據(jù)表。 C. 創(chuàng)建視圖時指定 WITH SCHEMABINDING 選項。 D. 創(chuàng)建視圖時指定 WITH CHECK 選項。 解析:答案: C P263 創(chuàng)建視圖的最佳實踐 指定了 SCHEMABINDING,則不能以可影響視圖定義的方式來修改基表。必須首先 修改或刪除視圖定義本身,然后才能刪除要修改的表的相關(guān)性。使用 SCHEMABINDING 時,select_statement 必須包含所引用的表、視圖或用戶定義函數(shù)的兩部分名稱()。所有被引用對象都必須在同一個數(shù)據(jù)庫內(nèi)。 不能刪除參與使用 SCHEMABINDING 子句創(chuàng)建的視圖的表或視圖,除非該視圖已被刪除或更改,而不再具有架構(gòu)綁定。 答案: C 2( 52) 你正在 SQL SERVER 2022 數(shù)據(jù)庫中創(chuàng)建一個連接 Customers 和 Orders 表的視圖。你需 要確信不能按照將影響視圖定義的方式修改基表或表。為了達到這個目標,最簡單且節(jié)省管理成本的方法應該是? A. 在表上創(chuàng)建一個 CHECK 約束。 B. 在表上創(chuàng)建一個 DDL 觸發(fā)器,如果對表的修改影響了視圖定義則回滾任何對表的改變。 C. 在創(chuàng)建視圖的時候,指定 WITH SCHEMABINDING 選項。 D. 在創(chuàng)建視圖的時候,指定 WITH CHECK 選項。 解析: P263 創(chuàng)建視圖的最佳實踐 聯(lián)機幫助: 不能刪除參與到使用 SCHEMABINDING 子句創(chuàng)建的視圖中的視圖、表或 函數(shù),除非該視圖已被刪除或更改而不再具有架構(gòu)綁定。另外,如果對參與具有架構(gòu)綁定的視圖的表執(zhí)行 ALTER TABLE 語句,而這些語句又會影響該視圖的定義,則這些語句將會失敗。 答案 : C 2( 58) 你正在負責管理公司一個 SQL SERVER 2022 數(shù)據(jù)庫。公司使用一個連接客戶和銷售表的視圖 v_CustomerSales 進行例行的業(yè)務分析。他們用這個視圖按月按客戶進行銷售數(shù)據(jù)匯總。為 了 提高視圖的性能,你應該怎么做? A. 修改視圖,在表 Customers 和 Sales 之間采用外連接( outer join)。 B. 為視圖 v_CustomerSales 新建一個聚集索引。 C. 為 Customers 表和 Sales 表分別創(chuàng)建 v_Customers 和 v_Sales 視圖。在每個視圖中不包含任何的連接關(guān)系。 D. 用 v_CustomerSales 視圖創(chuàng)建一個存儲過程來進行業(yè)務分析。 解析: P272 索引視圖可以改善性能,且對視圖創(chuàng)建的第一個索引必須是唯一聚集索引。 答案 : B 2( 59) 公司 A 使用 SQL SERVER 2022 數(shù)據(jù)庫。你正在實現(xiàn)一系列用在 ad hoc查詢(即席 查詢)的視圖。這些視圖用來增強公司 A 數(shù)據(jù)訪問的安全性??墒牵渲械哪承┮晥D查詢數(shù)據(jù)緩慢,為此,在你進行公司安全策略維護的時候,想給這些視圖創(chuàng)建一些索引,以提高性能。其中,有一個視圖并不允許你創(chuàng)建索引。已知,這個視圖使用了 GETDATE()函數(shù)返回當前日期作為視圖的一列。請問,為了在這個視圖上能夠創(chuàng)建索引,你應該如何做?(選擇兩個答案) A. 移除視圖中所有對確定性函數(shù)的調(diào)用。 B. 移除視圖中所有對非確定性函數(shù)的調(diào)用。 C. 對視圖中使用的所有函數(shù)進行架構(gòu)綁定。 D. 在創(chuàng)建視圖的時候指定 WITH CHECK OPTION 子句。 解析: P273 創(chuàng)建索引視圖存在多種相關(guān)要求和限制,其中兩條: SCHEMABINDING 選項定義的,架構(gòu)綁定將視圖與底層基表的架構(gòu)進行綁定; ;(此處的 GETDATE 函數(shù)就不確定,需根據(jù)具體時間定) 答案 : B,C 2( 37) 你正在 SQL SERVER 2022 數(shù)據(jù)庫中創(chuàng)建一個從聯(lián)系人表刪除聯(lián)系人數(shù)據(jù)的存儲過程。在存儲過程中包含如下的語句來處理可能發(fā)生的任何錯誤。 BEGIN TRY BEGIN TRANSACTION DELETE FROM WHERE ContactID = @ContactID COMMIT TRANSACTION END TRY BEGIN CATCH DECLARE @ErrorMessage nvarchar(2022) DECLARE @ErrorSeverity int DECLARE @ErrorState int SELECT @ErrorMessage=ERROR_MESSAGE(), @ErrorSeverity= RROR_SEVERITY(), @ErrorState = ERROR_STATE() RAISERROR (@ErrorMessage,@ErrorSeverity, @ErrorState) END CATCH。 在你執(zhí)行存儲過程后發(fā)現(xiàn),事務仍然 保持打開狀態(tài)。為了正確的處理打開的事務,你應該如何修改你的存儲過程? A. 在 CATCH 語句塊增加 COMMIT TRANSACTION 命令。 B. 在 TRY 語句塊移除 COMMIT TRANSACTION 命令。 C. 在 CATCH 塊增加 ROLLBACK TRANSACTION 命令。 D. 在 TRY 塊增加 ROLLBACK TRANSACTION 命令。 解析: P299300 在處理錯誤內(nèi)容中使用事務 答案 : C ( 53) 你正在為一個抵押公司創(chuàng)建一個 SQL Server 2022 數(shù)據(jù)庫。數(shù)據(jù)庫將用來支持一個新的能支持 1000 個并發(fā)用戶的 Web 應用。這個應用必須快速的顯示精確計算的結(jié)果,例如:抵押支出能力、分期償付方案等。你需要確保 數(shù)據(jù)庫處理速度盡可能的快 ,你應該怎么做? A. 在應用中執(zhí)行參數(shù)化的 SQL 查詢。 B. 在數(shù)據(jù)庫執(zhí)行 SQL 存儲過程。 C. 在數(shù)據(jù)庫中執(zhí)行 CLR 存儲過程。 Web services 實現(xiàn)。 解析: P282 CLR 存儲過程比 TSQL 存儲過程更健壯、更優(yōu)秀,性能更高。 答案 : C 3( 66) 表名稱 存儲 surname 名以下面所列字符作為起始字母的客戶信息 Customer1 AH(客戶 surname 名以字母 A 到 H 開頭) Customer2 IP Customer3 QZ 圖( 47) 公司 A 的客戶數(shù)據(jù)以獨立的 3 個表存儲在 SQL SERVER 2022 數(shù)據(jù)倉庫中,每個表被用來對數(shù)據(jù)進行水平分區(qū)。 在把數(shù)據(jù)從 SQL SERVER 2022 數(shù)據(jù)庫整合到SQL Server 2022 數(shù)據(jù)倉庫的時候,按照上面圖示(圖 47)把數(shù)據(jù)分區(qū)到 3 個獨立的表中?,F(xiàn)在,你需要在每一個客戶表中增加一個新列‘ OptOutFlag’。而且你要保證這個列 要么同時被增加到 3 個客戶表中,要么 3 個都不增加 。并且也要保證數(shù)據(jù)庫總是在一致的狀態(tài)下。你應該使用下面那個一個批處 理命令? A. BEGIN TRAN_ ALTER TABLE TESTKING1 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING2 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING3 ADD OptOutFlag BIT NULL IF @@error 0ROLLBACK TRANELSECOMMIT TRA B. BEGIN TRAN BEGIN TRY ALTER TABLE TESTKING1 ADD OptOutFlag BIT NU ALTER TABLE TESTKING2 ADD OptOutFlag BIT NU ALTER TABLE TESTKING3 ADD OptOutFlag BIT NU END TRY_ BEGIN CATCH_ ROLLBACK TRAN RETURN END CATCH COMMIT TRAN C. ALTER TABLE TESTKING1 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING2 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING3 ADD OptOutFlag BIT NULL D. BEGIN TRAN ALTER TABLE TESTKING1 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING2 ADD OptOutFlag BIT NULL ALTER TABLE TESTKING3 ADD OptOutFlag BIT NULL COMMIT TRAN 解析: P297 結(jié)構(gòu)化錯誤處理是使用 TRY? CATCH 塊實現(xiàn)的, TRY 塊包含可能失敗的事務性代碼,CATCH 塊包含當 TRY 塊中發(fā)生錯誤時所執(zhí)行的代碼。 答案 : B 3( 68) 公司 A 有一個 SQL SERVER 2022 數(shù)據(jù)庫服務器。你被指派了一個任務是去得到當前已登錄數(shù)據(jù)庫的用戶的信息。為此,你需要去 創(chuàng)建 一個 返回指定用戶活動時長的函數(shù) ,請問,下面那兩個方法能達到這個目的? ,它返回給定用戶的登錄時間值。 B. 創(chuàng)建一個返回值列表的函數(shù),它返回返回超過當前用戶登錄時長的那些用戶的登錄小時數(shù)。 一個返回指定用戶當天登錄小時數(shù)的函數(shù)。 。 答案 : C,D 3( 69) 你正在基于一個為客戶提供銀行信息的 SQL SERVER 2022 數(shù)據(jù)庫進行著工作。你想讓客戶看到銀行報表。已知,這個報表的數(shù)據(jù)是由數(shù)據(jù)庫中提取的數(shù)據(jù)和 從一個第三方的 Web Service 獲得 的實時投資數(shù)據(jù)組合而成。要求,當報表執(zhí)行的時候獲得的投資信息必須是當前的,為此,你需要在數(shù)據(jù)庫中創(chuàng)建合適的對象去支持這個報表,你應該怎么做? A. 使用 FOR XML AUTO 子 句發(fā)布數(shù)據(jù)庫數(shù)據(jù)為 XML Web service。 B. 為每個客戶創(chuàng)建一個存儲銀行信息的表。然后為表創(chuàng)建一個 Inserted 觸發(fā)器,在觸發(fā)器被激活時通過 Web Service 獲得相應數(shù)據(jù)一并插入表中。 C. 創(chuàng)建一個 SQL 存儲過程,它用臨時表存儲每個客戶的銀行信息。然后用 Web Service 的值更新這個表的值。 D. 讓開發(fā)人員創(chuàng)建一個調(diào)用 Web Service 的類庫。然后用這個類庫創(chuàng)建一個 CLR函數(shù)。調(diào)用 CLR 函數(shù)并和數(shù)據(jù)庫中的銀行信息進行合并后得出結(jié)果。 答案 : D 解析: P282 TSQL只可以訪問數(shù)據(jù)庫的資源。為了訪問外部系統(tǒng)資源,使用 CLR 微軟發(fā)布了公共語言運行庫 (CLR),允許開發(fā)人員和 DBA 能夠利用 SQL Server 之外的托管代碼。 CLR 為那些懂的 . 開發(fā)語言,但是不懂的 TSQL 語言的人,提供了一種實現(xiàn)方式。使用 CLR,可以直接在 SQL Ser