搜尋本站文章

2013-02-27

初探Cursors(資料指標) 與資料列集(Rowsets)


SQL Server 會使用兩個方法將結果集傳回給取用者:

1. 「資料列集(Rowsets)」具有以下功能:


  • 將負擔最小化。
  • 在提取資料時提供最大效能。
  • 只支援預設的順向、唯讀資料指標功能。
  • 一次將一個資料列傳回給取用者。
  • 一次只支援連接上有一個作用中陳述式。
  • 在執行陳述式之後,要等到取用者已經擷取所有結果或是陳述式已被取消之後,才可以在連接上執行其他陳述式。
  • 支援所有 Transact-SQL 陳述式。


2. Server Cursors(伺服器資料指標)具有以下功能:


  • 支援所有的資料指標功能。
  • 可以將資料列區塊傳回給取用者。
  • 支援單一連接上有多個作用中陳述式。
  • 平衡資料指標功能與效能。
  • 資料指標功能的支援會減少相對於預設結果集的效能。如果取用者可以使用資料指標功能來擷取較小的資料列集,就可以抵銷這個作用。
  • 請勿支援會傳回單一結果集以上的任何 Transact-SQL 陳述式。



認識 Cursors(資料指標)

SQL Server 陳述式雖然會產生完整的結果集,但有時候這些結果或許可以改以一次處理一個資料列。

您可以在結果集上開啟一個資料指標,一次處理一個資料列結果集。

您可以指派一個資料指標給 cursor 資料類型的變數或參數。

關聯式資料庫中的作業會針對完整的資料列集運作。
例如,由 SELECT 陳述式所傳回的資料列集包括所有滿足陳述式 WHERE 子句之條件的資料列。

由陳述式傳回的完整資料列稱為結果集。
應用程式 (尤其是互動式線上應用程式) 不一定能夠以一個單位有效地運用整個結果集。

這些應用程式需要一個機制,一次運用一個資料列或小型資料列區塊。
資料指標就是一種結果集的擴充,提供此種機制。

資料指標擴充結果處理的方式是:

1. 允許定位於結果集中的特定資料列。
2. 從結果集的目前位置,擷取一個資料列或資料列區塊。

3. 支援結果集目前位置上資料列的資料修改。
4. 支援以不同可見性層級來檢視其他使用者對結果集所呈現的資料庫資料所作的變更。

5. 讓指令碼、預存程序和觸發程序中的 Transact-SQL 陳述式能夠存取結果集中的資料。

--
資料指標的 tempdb 使用量

索引鍵集驅動及靜態資料指標會使用 tempdb 內建的工作資料表。
索引鍵集驅動資料指標會使用工作資料表,來儲存識別資料指標中資料列的索引鍵集。

靜態資料指標使用工作資料表來儲存資料指標的完整結果集。
資料指標的磁碟空間使用量可能不同,視所選擇的查詢計畫而定。

如果查詢計畫與 SQL Server 的舊版相同,則磁碟空間使用量大致相同。



DECLARE CURSOR (Transact-SQL)

定義 Transact-SQL 伺服器資料指標的屬性,例如其捲動行為以及用來建立資料指標運作所在之結果集的查詢。
DECLARE CURSOR 可接受 ISO 標準語法,以及使用一組 Transact-SQL 延伸模組的語法。

--
引數:
FORWARD_ONLY

指定資料指標只能從第一個資料列捲到最後一個資料列。
FETCH NEXT 是唯一支援的提取選項。

如果指定不含 STATIC、KEYSET 或 DYNAMIC 等關鍵字的 FORWARD_ONLY 時,資料指標便會作為 DYNAMIC 資料指標操作。
當 FORWARD_ONLY 和 SCROLL 兩者都沒有指定時,除非指定了 STATIC、KEYSET 或 DYNAMIC 等關鍵字,否則,預設值是 FORWARD_ONLY。

STATIC、KEYSET 和 DYNAMIC 資料指標預設為 SCROLL。
與 ODBC 和 ADO 等資料庫 API 不同的是,STATIC、KEYSET 和 DYNAMIC 等 Transact-SQL 資料指標支援 FORWARD_ONLY。

--
@@FETCH_STATUS 資料指標函數

傳回針對連接目前開啟的任何資料指標而發出的最後一個資料指標 FETCH 陳述式的狀態。

0:FETCH 陳述式成功。
-1:FETCH 陳述式失敗,或資料列已超出結果集。
-2:遺漏提取的資料列。



EX00. 建立資料表:myOrders



-- 因為要觀察 tempdb 資料庫,重新啟動 SQL Server

-- EX00. 建立資料表:myOrders

-- 00_建立資料表:myOrders,
-- 耗時約:27 秒。HD:80 GB 。
SET NOCOUNT ON
USE Northwind_Dev
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[myOrders]') AND type in (N'U'))
DROP TABLE [dbo].[myOrders]
GO
CREATE TABLE myOrders
(EmployeeID INT , OrderDate DATETIME)
GO
DECLARE @CNT INT= 1
WHILE @CNT < 100001
BEGIN
 INSERT myOrders SELECT CAST(RAND() * 10 AS INT) , GETDATE()+@CNT
 SET @CNT +=1
END
GO

--  01_100,000 筆資料列
SELECT COUNT(*) FROM dbo.myOrders
GO

--  02_檢視資料表:dbo.myOrders
SELECT * FROM dbo.myOrders
GO


-- 01_檢視資料表:dbo.myOrders




-- 03_查詢目前資料庫內,每一個資料表的使用空間資訊
SELECT a3.name AS N'結構描述',  a2.name AS N'資料表',  a1.rows AS N'資料列筆數',  (a1.reserved + ISNULL(a4.reserved,0))* 8.0/1024 AS N'配置的空間總量(MB)',  a1.data * 8.0/1024 AS '資料(MB)',  
(CASE WHEN (a1.used + ISNULL(a4.used,0)) > a1.data THEN (a1.used + ISNULL(a4.used,0)) - a1.data ELSE 0 END) * 8.0/1024 AS N'索引(MB)',  
(CASE WHEN (a1.reserved + ISNULL(a4.reserved,0)) > a1.used THEN (a1.reserved + ISNULL(a4.reserved,0)) - a1.used ELSE 0 END) * 8.0/1024 AS N'尚未使用(MB)' 
FROM  (SELECT   ps.object_id, SUM ( CASE  WHEN (ps.index_id < 2) THEN row_count  ELSE 0 END  ) AS [rows],  
SUM (ps.reserved_page_count) AS reserved, SUM (  CASE WHEN (ps.index_id < 2) THEN (ps.in_row_data_page_count + ps.lob_used_page_count + ps.row_overflow_used_page_count)  
ELSE (ps.lob_used_page_count + ps.row_overflow_used_page_count)  END ) AS data,  
SUM (ps.used_page_count) AS used  
FROM sys.dm_db_partition_stats ps  
GROUP BY ps.object_id) AS a1 LEFT OUTER JOIN
(SELECT it.parent_id,  SUM(ps.reserved_page_count) AS reserved,  SUM(ps.used_page_count) AS used  
FROM sys.dm_db_partition_stats ps  INNER JOIN sys.internal_tables it ON (it.object_id = ps.object_id)  
WHERE it.internal_type IN (202,204)  
GROUP BY it.parent_id) AS a4 ON (a4.parent_id = a1.object_id)  
INNER JOIN sys.all_objects a2  ON ( a1.object_id = a2.object_id )   
INNER JOIN sys.schemas a3 ON (a2.schema_id = a3.schema_id)  
WHERE a2.type <> N'S' and a2.type <> N'IT' 
ORDER BY 4 DESC;
GO

/*
資料表:myOrders
資料列筆數:100000
配置的空間總量(MB):2.195312
資料(MB):2.132812
*/


-- 02_查詢目前資料庫內,每一個資料表的使用空間資訊




-- 04_檢視資料庫 tempdb 各個檔案的空間資料
USE tempdb
GO
SELECT name N'邏輯名稱' , size/128.0 N'使用的磁碟空間(MB)' ,
 CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 N'資料實際上使用的空間(MB)'
 ,size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 N'剩餘的可用空間(MB)',
 physical_name N'實體檔案'
FROM sys.database_files;
GO

/*
tempdev 
使用的磁碟空間(MB):8.000000
資料實際上使用的空間(MB):2.500000
*/


-- 03_檢視資料庫 tempdb 各個檔案的空間資料





EX1. 使用 CURSOR 來計算每一位員工,最近一次接單的日期


-- EX1. 使用 CURSOR 來計算每一位員工,最近一次接單的日期

-- 宣告:區域變數
USE Northwind_Dev
GO
DECLARE @empid AS INT, @orderdate AS DATETIME, @prevempid AS INT, @prevorderdate AS DATETIME;

-- 宣告:資料表變數:@T
DECLARE @T AS TABLE (empid INT,maxorderdate DATETIME);

-- 宣告 CURSOR:存放 EmployeeID 與 OrderDate
-- FORWARD_ONLY:指定資料指標只能從第一個資料列捲到最後一個資料列。 
DECLARE OrdersCursor CURSOR FAST_FORWARD FOR
  SELECT EmployeeID, OrderDate
  FROM dbo.myOrders
  ORDER BY EmployeeID, OrderDate; -- 排序:EmployeeID、OrderDate

-- 開啟此 CURSOR
OPEN OrdersCursor;

-- 在伺服器資料指標中,擷取第一筆資料列
FETCH NEXT FROM OrdersCursor INTO @empid, @orderdate;

-- 前一次擷取資料是成功時
WHILE @@FETCH_STATUS = 0
BEGIN
  -- 如果前一筆資料列的 EmployeeID 不同於目前的資料列,取出前一筆的 OrderDate 存放到 資料表變數:@T
 IF @prevempid <> @empid
 BEGIN
  INSERT INTO @T(empid, maxorderdate) VALUES(@prevempid, @prevorderdate);
 END

 SELECT @prevempid = @empid, @prevorderdate = @orderdate;

 FETCH NEXT FROM OrdersCursor INTO @empid, @orderdate;
END

-- 如果已經擷取全部的資料列後(此情形下 EmployeeID 會是 NULL),最後一筆資料列會是最後一位員工的最近一次的 OrderDate
IF @empid IS NOT NULL
BEGIN
 INSERT INTO @T(empid, maxorderdate) VALUES(@prevempid, @prevorderdate);
END

-- 查詢資料表變數:@T
SELECT empid, maxorderdate
FROM @T;

-- 若去觀察資料庫 tempdb 各個檔案的空間資料
/*
tempdev 
使用的磁碟空間(MB):8.000000
資料實際上使用的空間(MB):5.000000
*/

-- 釋出目前結果集
CLOSE OrdersCursor;

-- 移除資料指標參考。
DEALLOCATE OrdersCursor;
GO

-- 檢視資料庫 tempdb 各個檔案的空間資料
/*
tempdev 
使用的磁碟空間(MB):8.000000
資料實際上使用的空間(MB):2.562500
*/


-- 04_執行結果,查詢資料表變數:@T



-- 05_CURSOR執行後,檢視資料庫 tempdb 各個檔案的空間資料



-- 06_釋出與移除資料指標參考後,檢視資料庫 tempdb 各個檔案的空間資料





EX2. 改用資料列集(Rowsets)方式來計算

-- EX2. 改用資料列集(Rowsets)方式來計算

-- 計算每一位員工,最近一次接單的日期
USE Northwind_Dev
GO
SELECT EmployeeID, MAX(OrderDate) AS MaxOrderDate
FROM dbo.myOrders
GROUP BY EmployeeID
ORDER BY EmployeeID;
GO




EX3. 測試使用 CURSOR 與 資料列集(Rowsets) 方式的執行時間

-- EX3. 測試使用 CURSOR 與 資料列集(Rowsets) 方式的執行時間

-- 01_測試:使用 CURSOR 的執行時間:1.8270000(秒)

USE Northwind_Dev
GO
DECLARE @StartTime DATETIME2 = SYSDATETIME()

DECLARE @empid AS INT, @orderdate AS DATETIME, @prevempid AS INT, @prevorderdate AS DATETIME;
DECLARE @T AS TABLE (empid INT,maxorderdate DATETIME);

DECLARE OrdersCursor CURSOR FAST_FORWARD FOR
  SELECT EmployeeID, OrderDate
  FROM dbo.myOrders
  ORDER BY EmployeeID, OrderDate

OPEN OrdersCursor;

FETCH NEXT FROM OrdersCursor INTO @empid, @orderdate;

WHILE @@FETCH_STATUS = 0
BEGIN
 IF @prevempid <> @empid
 BEGIN
  INSERT INTO @T(empid, maxorderdate) VALUES(@prevempid, @prevorderdate);
 END

 SELECT @prevempid = @empid, @prevorderdate = @orderdate;

 FETCH NEXT FROM OrdersCursor INTO @empid, @orderdate;
END

IF @empid IS NOT NULL
BEGIN
 INSERT INTO @T(empid, maxorderdate) VALUES(@prevempid, @prevorderdate);
END

SELECT empid, maxorderdate
FROM @T;

CLOSE OrdersCursor;
DEALLOCATE OrdersCursor;

SELECT DATEDIFF(ms, @StartTime, SYSDATETIME())/1000.00 N'使用 CURSOR 的執行時間(秒)'
GO

-- 02_測試:資料列集(Rowsets)方式,所需的執行時間:0.0470000(秒)
USE Northwind_Dev
GO
DECLARE @StartTime DATETIME2 = SYSDATETIME()

SELECT EmployeeID, MAX(OrderDate) AS MaxOrderDate
FROM dbo.myOrders
GROUP BY EmployeeID
ORDER BY EmployeeID;

SELECT DATEDIFF(ms, @StartTime, SYSDATETIME())/1000.00 N'資料列集(Rowsets)方式的執行時間(秒)'
GO


-- 07_使用 CURSOR 的執行時間



-- 08_資料列集(Rowsets)方式,所需的執行時間






或許,可以將 Cursors(資料指標) 改用以下方式來處理:

1. SQL視窗函數(SQL Windows Function)。
2. Aggegrate Functions。

...等。



參考資料

資料指標
http://technet.microsoft.com/zh-tw/library/ms191179.aspx

資料指標 (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms181441.aspx

資料列集和 SQL Server 資料指標(Rowsets and SQL Server Cursors)
http://technet.microsoft.com/zh-tw/library/ms130840(v=sql.110).aspx

關於選擇資料指標類型
http://technet.microsoft.com/zh-tw/library/ms187859(v=sql.100).aspx

資料指標程式設計詳細內容
http://technet.microsoft.com/zh-tw/library/ms186346(v=sql.100).aspx

--
最佳化 tempdb 效能
http://technet.microsoft.com/zh-tw/library/ms175527(v=sql.105).aspx

tempdb 的容量計畫
http://msdn.microsoft.com/zh-tw/library/ms345368(v=sql.105).aspx

--
新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(1)
http://sharedderrick.blogspot.tw/2013/01/sql-server-2012sqlsql-windows-function1.html

新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(2),以CUME_DIST、PERCENT_RANK、PERCENTILE_CONT和PERCENTILE_DISC視窗統計分佈函數為例
http://sharedderrick.blogspot.tw/2013/01/sql-server-2012sqlsql-windows.html


新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(3),以FIRST_VALUE()和LAST_VALUE()視窗相對位移函數為例
http://sharedderrick.blogspot.tw/2013/02/sql-server-2012sqlsql-windows.html

2013-02-26

新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(3),以FIRST_VALUE()和LAST_VALUE()視窗相對位移函數為例


新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(3),以FIRST_VALUE()和LAST_VALUE()視窗相對位移函數為例

在前一篇文章中,介紹了認識視窗統計分佈函數、認識CUME_DIST、認識PERCENT_RANK、認識PERCENTILE_DISC、認識PERCENTILE_CONT等主題。

在本次文章中,將繼續討論視窗相對位移函數,包含有:FIRST_VALUE()、LAST_VALUE()、LAG()、LEAD()以及ROWS或RANGE子句等主題。



完整文章,請參考以下的網址:

新手學SQL Server 2012「SQL視窗函數(SQL Windows Function)」(3),以FIRST_VALUE()和LAST_VALUE()視窗相對位移函數為例



2013-02-22

動態 PIVOT 陳述式:Dynamic PIVOT


建立動態 PIVOT 陳述式:Create Dynamic PIVOT

適用版本:SQL Server 2005、2008、2008 R2、2012等版本。

SQL Server 2005 版本,提供 PIVOT 和 UNPIVOT 關係運算子,將資料表值運算式變更為另一個資料表。

PIVOT 會將運算式內一個資料行中的唯一值轉成輸出中的多個資料行,以旋轉資料表值運算式,然後依據最終輸出的需要,對其餘的任何資料行值執行必要的彙總。

UNPIVOT 執行的作業則與 PIVOT 相反,它會將資料表值運算式旋轉為資料行值。

PIVOT 提供的語法比您另外指定一連串複雜的 SELECT...CASE 陳述式,還要簡單易讀。

若要使用 PIVOT 和 UNPIVOT 關係運算子,資料庫的相容性層級必須設為 90 或更高。



準備工作:建立範例資料表

請參考以下的範例程式碼:


-- 建立資料表
USE Northwind_Dev
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[myInvoices]') AND type in (N'U'))
DROP TABLE [dbo].[myInvoices]
GO
SELECT CustomerID, DATEPART(M,OrderDate) N'OrderMonth', SUM(UnitPrice) N'SubTotal'
 INTO myInvoices
FROM Northwind.dbo.Invoices
GROUP BY DATEPART(M,OrderDate),CustomerID
GO

-- 查詢資料表:myInvoices
SELECT * FROM myInvoices
ORDER BY CustomerID,OrderMonth
GO


-- 01_檢視資料表_myInvoices






EX1. 使用 PIVOT,呈現各月(1~12月)的客戶消費彙總金額

-- EX1. 使用 PIVOT,呈現各月(1~12月)的客戶消費彙總金額

-- OrderMonth 資料行,資料類型是 INT

/*
在 PIVOT 的 IN 子句內:
使用數字當做資料行的名稱時,前後使用方括號[] 或 雙引號 ""
*/
SELECT *
FROM myInvoices
 PIVOT (SUM(SubTotal)
  FOR OrderMonth IN ([1],[2],[3], [4], [5],[6],[7],[8],[9],[10],[11],[12]) ) pvt
GO


-- 02_使用 PIVOT,呈現各月(1~12月)的客戶消費彙總金額






EX2. 動態組合 PIVOT 陳述式,呈現各月(1~12月)的客戶消費彙總金額

-- EX2. 動態組合 PIVOT 陳述式,呈現各月(1~12月)的客戶消費彙總金額

-- OrderMonth 資料行,資料類型是 INT

/*
QUOTENAME (Transact-SQL)
傳回 Unicode 字串,且附加了分隔符號,以便使輸入字串成為有效的 SQL Server 分隔識別碼。
*/

-- 01_sp_executesql + PIVOT + COALESCE() + QUOTENAME:適用 SQL Server 2005 版本

DECLARE @ColumnGroup NVARCHAR(MAX), @PivotSQL NVARCHAR(MAX) 

SELECT @ColumnGroup = COALESCE(@ColumnGroup + ',' ,'' ) + QUOTENAME(OrderMonth) 
FROM myInvoices 
GROUP BY QUOTENAME(OrderMonth) 

SELECT @PivotSQL = N'
SELECT * FROM myInvoices PIVOT (SUM(SubTotal) FOR OrderMonth 
 IN (' + @ColumnGroup +  N') ) AS pvt'

EXEC sp_executesql  @PivotSQL;
GO


-- 03_區域變數@ColumnGroup



-- 04_區域變數@PivotSQL






EX3. CategoryName 資料行,資料類型是字串

-- EX3. CategoryName 資料行,資料類型是字串

USE Northwind_Dev
GO
SELECT * FROM dbo.[Product Sales for 1997]
GO


-- 05_查詢檢視表_[Product Sales for 1997]



-- 01_使用 PIVOT

SELECT *
FROM dbo.[Product Sales for 1997]
 PIVOT (SUM(ProductSales)
  FOR CategoryName IN ([Beverages],[Condiments],[Confections], [Dairy Products], [Grains/Cereals],[Meat/Poultry],[Produce],[Seafood]) ) pvt
GO


-- 06_PIVOT_CategoryName 資料行,資料類型是字串




-- 02_動態組合 PIVOT 陳述式:sp_executesql + PIVOT + COALESCE() + QUOTENAME:適用 SQL Server 2005 版本

DECLARE @ColumnGroup NVARCHAR(MAX), @PivotSQL NVARCHAR(MAX) 

SELECT @ColumnGroup = COALESCE(@ColumnGroup + ',' ,'' ) + QUOTENAME(CategoryName) 
FROM dbo.[Product Sales for 1997]
GROUP BY QUOTENAME(CategoryName) 

SELECT @PivotSQL = N'
SELECT * FROM dbo.[Product Sales for 1997] PIVOT (SUM(ProductSales) FOR CategoryName 
 IN (' + @ColumnGroup +  N') ) AS pvt' 

EXEC sp_executesql  @PivotSQL;
GO


-- 07_區域變數@ColumnGroup



-- 08_區域變數@PivotSQL







參考資料

使用 PIVOT 和 UNPIVOT
http://technet.microsoft.com/zh-tw/library/ms177410(v=sql.105).aspx

FROM (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms177634(v=sql.110).aspx

SQL Server:認識 COALESCE() 函數
http://sharedderrick.blogspot.tw/2012/06/t-sql-coalesce.html

2013-02-18

考試心得,Exam 70-464: Developing Microsoft SQL Server 2012 Databases


考試科目:
MCSE: Data Platform
Exam 70-464: Developing Microsoft SQL Server 2012 Databases

-- 01_MCSE_Data Platform Solutions Expert_SQL_Server_2012_認證_考試_教材



請注意:
本文是筆者與朋友整理出來的資料,僅供參考。
Microsoft 可能會隨時變更考試的內容與方式。

從 2014 年 4 月 24 日起,本測驗的問題範圍將包含 SQL Server 2014 的內容。




更新日期:2013/02/18

各位考生在參與考試時,都會簽署一份 NDA(Non-Disclosure Agreement,保密協議),對於考試的內容必須要保密。



Microsoft 建議參考的教材:

1. 課程:10776A: Developing Microsoft SQL Server 2012 Databases (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10776A&locale=en-us

2. 免費電子書:Free ebook: Introducing Microsoft SQL Server 2012
http://go.microsoft.com/FWLink/?Linkid=229829



考試各項主題的配分比重:

1. Implement Database Objects (31%)

2. Implement Programming Objects (21%)

3. Design Database Objects (24%)

4. Optimize and Troubleshoot Queries (24%)



考試題型之分享

考試時間約:180 min。
題數約:45 題。

及格分數:700 分。
滿分:1000 分。

題型:單選、複選、拖曳、案例分析。

1. 單選

2. 複選

多選多,但題目內未說明要選幾個答案。

3. 拖曳

拖曳 T-SQL 程式碼到正確位置,以及排列順序。



參考資料:

MCSE: Data Platform Solutions Expert -- SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2013/02/mcse-data-platform-solutions-expert-sql.html

考試:Exam 70-464: Developing Microsoft SQL Server 2012 Databases
http://www.microsoft.com/learning/en/us/exam.aspx?id=70-464

課程:10776A: Developing Microsoft SQL Server 2012 Databases (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10776A&locale=en-us

MCSA SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2012/09/mcsa-sql-server-2012.html

考試心得,Exam 70-461 : Querying Microsoft SQL Server 2012
http://sharedderrick.blogspot.tw/2013/01/exam-70-461-querying-microsoft-sql.html

考試心得,Exam 70-462: Administering Microsoft SQL Server 2012 Databases
http://sharedderrick.blogspot.tw/2013/02/exam-70-462-administering-microsoft-sql.html

考試心得,Exam 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012
http://sharedderrick.blogspot.tw/2013/02/exam-70-463-implementing-data-warehouse.html

2013-02-06

MCSE: Business Intelligence Solutions Expert -- SQL Server 2012 認證


2012 年,Microsoft 認證又有新的變革,認證等級分成為三種:MCSA、MCSE/MCSD、MCSM。

基礎認證是:MCSA:Microsoft Certified Solutions Associate。
專家級認證:MCSE:Microsoft Certified Solutions Expert。

-- 00_Microsoft Certification Tracks



MCSE: Business Intelligence Solutions Expert -- SQL Server 2012 認證為例,須先取得 MCSA SQL Server 2012 認證後,再通過兩門考試:

70-466、70-467



考試科目

-- 01_MCSE: Business Intelligence Solutions Expert_SQL_Server_2012_認證_考試



1.
Exam 70-466: Implementing Data Models and Reports with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-466

2.
Exam 70-467: Designing Business Intelligence Solutions with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-467



對應課程

-- 02_MCSE: Business Intelligence Solutions Expert_SQL_Server_2012_認證_考試_教材



1.
Course 10778A: Implementing Data Models and Reports with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/course.aspx?ID=10778A

2.
Course 20467A: Designing Business Intelligence Solutions with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/course.aspx?ID=20467A



認證考試與課程列表

以下是完整的認證考試與課程列表

-- 03_MCSE: Business Intelligence Solutions Expert -- SQL Server 2012 完整的認證考試列表



小計有五門認證考試:
70-461、70-462、70-463、70-466、70-467等。

小計有五門課程:
10774、10775、10776、10778、20467等。

取得兩張認證:
1. MCSA SQL Server 2012
2. MCSE: Business Intelligence Solutions Expert

注意事項:

取得 MCSE 認證後,必須要每三年重新認證。
取得 MCSD 認證後,必須要每兩年重新認證。

重新認證的方式:通過一門升級考試,來確認此證照的有效性。



升級考試

以下是升級考試的相關資訊:

-- 04_升級考試_MCSE: Business Intelligence Solutions Expert -- SQL Server 2012



需先具備以下的認證:

MCITP: Database Developer 2008
MCITP: Database Administrator 2008

先取得兩門 SQL Server 2008 MCITP 認證後,
再通過以下一門的考試:

1.

Exam 70-460: Transition Your MCITP: Business Intelligence Developer 2008 to MCSE: Business Intelligence
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-460




參考資料:

Microsoft SQL Server certifications
http://www.microsoft.com/learning/en/us/sql-certification.aspx

MCSE: Business Intelligence Solutions Expert
http://www.microsoft.com/learning/en/us/mcse-sql-business-intelligence.aspx

MCSA SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2012/09/mcsa-sql-server-2012.html

MCSE: Data Platform Solutions Expert -- SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2013/02/mcse-data-platform-solutions-expert-sql.html

2013-02-05

MCSE: Data Platform Solutions Expert -- SQL Server 2012 認證


2012 年,Microsoft 認證又有新的變革,認證等級分成為三種:MCSA、MCSE/MCSD、MCSM。

基礎認證是:MCSA:Microsoft Certified Solutions Associate。
專家級認證:MCSE:Microsoft Certified Solutions Expert。


-- 00_Microsoft Certification Tracks




以 MCSE: Data Platform Solutions Expert -- SQL Server 2012 認證為例,須先取得 MCSA SQL Server 2012 認證後,再通過兩門考試:

70-464、70-465



考試科目

-- 01_MCSE: Data Platform Solutions Expert_SQL_Server_2012_認證_考試



1.
Exam 70-464: Developing Microsoft SQL Server 2012 Databases
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-464

2.
Exam 70-465: Designing Database Solutions for Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-465



對應課程

-- 02_MCSE: Data Platform Solutions Expert_SQL_Server_2012_認證_考試_教材



1.
Course 10776A: Developing Microsoft SQL Server 2012 Databases
http://www.microsoft.com/learning/en/us/course.aspx?ID=10776A

2.
Course 20465A: Designing Database Solutions for Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/Course.aspx?ID=20465A



認證考試與課程列表

以下是完整的認證考試與課程列表

-- 03_MCSE: Data Platform Solutions Expert -- SQL Server 2012 完整的認證考試列表



小計有五門認證考試:
70-461、70-462、70-463、70-464、70-465等。

小計有五門課程:
10774、10775、10776、10777、20465等。

取得兩張認證:
1. MCSA SQL Server 2012
2. MCSE: Data Platform Solutions Expert

注意事項:

取得 MCSE 認證後,必須要每三年重新認證。
取得 MCSD 認證後,必須要每兩年重新認證。

重新認證的方式:通過一門升級考試,來確認此證照的有效性。



升級考試

以下是升級考試的相關資訊:

-- 04_升級考試_MCSE: Data Platform Solutions Expert -- SQL Server 2012



需先具備以下的認證:

MCITP: Database Developer 2008
MCITP: Database Administrator 2008


先取得兩門 SQL Server 2008 MCITP 認證後,
再通過以下一門的考試:


1.
Exam 70-459: Transition Your MCITP: Database Administrator 2008 or MCITP: Database Developer 2008 to MCSE: Data Platform
http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-459



參考資料:

Microsoft SQL Server certifications
http://www.microsoft.com/learning/en/us/sql-certification.aspx

MCSE: Data Platform Solutions Expert
http://www.microsoft.com/learning/en/us/mcse-sql-data-platform.aspx

MCSA SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2012/09/mcsa-sql-server-2012.html

2013-02-04

考試心得,Exam 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012


考試科目:
Exam 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012

-- 01_MCSA_SQL_Server_2012



請注意:

本文是筆者與朋友整理出來的資料,僅供參考。
Microsoft 可能會隨時變更考試的內容與方式。

更新日期:2013/02/04

各位考生在參與考試時,都會簽署一份 NDA(Non-Disclosure Agreement,保密協議),對於考試的內容必須要保密。



Microsoft 建議參考的教材:

1. 課程:10777A: Implementing a Data Warehouse with Microsoft SQL Server 2012 (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10777A&Locale=en-us

2. Microsoft Press Books
Training Kit (Exam 70-463): Implementing a Data Warehouse with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/book.aspx?id=16114&locale=en-us

3. 免費電子書:Free ebook: Introducing Microsoft SQL Server 2012
http://go.microsoft.com/FWLink/?Linkid=229829



考試各項主題的配分比重:

1. Design and Implement a Data Warehouse (11%)

2. Extract and Transform Data (23%)

3. Load Data (27%)

4. Configure and Deploy SSIS Solutions (24%)

5. Build Data Quality Solutions (15%)




考試題型之分享

考試時間約:165 min。
題數約:55 題。

及格分數:700 分。
滿分:1000 分。

題型:單選、複選、拖曳。

1. 單選

更多選項:不只是A、B、C、D等四個選項,筆者曾遇的是:由 A 到 K 的選項。

2. 複選

多選多,但題目內未說明要選幾個答案。

3. 拖曳

(a) 拖曳、設計 SSIS Task、流程。

(b) 拖曳各項目,正確的建置順序。

4. 設定

設定屬性。



參考資料:

考試:Exam 70-463: Implementing a Data Warehouse with Microsoft SQL Server 2012
http://www.microsoft.com/learning/en/us/exam.aspx?id=70-463


課程:10777A: Implementing a Data Warehouse with Microsoft SQL Server 2012 (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10777A&Locale=en-us


MCSA SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2012/09/mcsa-sql-server-2012.html


考試心得,Exam 70-461 : Querying Microsoft SQL Server 2012
http://sharedderrick.blogspot.tw/2013/01/exam-70-461-querying-microsoft-sql.html

考試心得,Exam 70-462: Administering Microsoft SQL Server 2012 Databases
http://sharedderrick.blogspot.tw/2013/02/exam-70-462-administering-microsoft-sql.html

2013-02-01

考試心得,Exam 70-462: Administering Microsoft SQL Server 2012 Databases


考試科目:
Exam 70-462: Administering Microsoft SQL Server 2012 Databases

-- 01_MCSA_SQL_Server_2012



請注意:
本文是筆者與朋友整理出來的資料,僅供參考。
Microsoft 可能會隨時變更考試的內容與方式。

更新日期:2013/02/01

各位考生在參與考試時,都會簽署一份 NDA(Non-Disclosure Agreement,保密協議),對於考試的內容必須要保密。



Microsoft 建議參考的教材:

1. 課程:10775A: Administering Microsoft SQL Server 2012 Databases (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10775A&Locale=en-us

2. Microsoft Press Books
Training Kit (Exam 70-462): Administering Microsoft® SQL Server® 2012 Databases
http://www.microsoft.com/learning/en/us/book.aspx?id=16016&locale=en-us

3. 免費電子書:Free ebook: Introducing Microsoft SQL Server 2012
http://go.microsoft.com/FWLink/?Linkid=229829



考試各項主題的配分比重:

1. Install and Configure (19%)
2. Maintain Instances and Databases (17%)

3. Optimize and Troubleshoot (14%)
4. Manage Data (19%)

5. Implement Security (18%)
6. Implement High Availability (12%)



考試題型之分享

考試時間約:155 min。
題數約:50 題。

及格分數:700 分。
滿分:1000 分。

題型:單選、複選、拖曳。

1. 單選

更多選項:不只是A、B、C、D等四個選項,筆者曾遇的是:由 A 到 J 的選項。

2. 複選

多選多,但題目內未說明要選幾個答案。

3. 拖曳

(a) 拖曳各部分 T-SQL 程式碼,組合成正確的 T-SQL 程式碼。

(b) 拖曳適合選項,配對題型。

(c) 拖曳各項目,正確的建置順序。



參考資料:

考試:Exam 70-462 : Administering Microsoft SQL Server 2012 Databases
http://www.microsoft.com/learning/en/us/exam.aspx?id=70-462

課程:10775A: Administering Microsoft SQL Server 2012 Databases (5 Days)
http://www.microsoft.com/learning/en/us/Course.aspx?ID=10775A&Locale=en-us

MCSA SQL Server 2012 認證
http://sharedderrick.blogspot.tw/2012/09/mcsa-sql-server-2012.html


考試心得,Exam 70-461 : Querying Microsoft SQL Server 2012
http://sharedderrick.blogspot.tw/2013/01/exam-70-461-querying-microsoft-sql.html