天天看點

在SSIS 2012中使用CDC(資料變更捕獲)

最新項目稍有空隙,開始研究sql server 2012和2014的一些bi特性,參照()的一個示例,我們開始體驗ssis中的cdc(change data capture,變更資料捕獲)。

注:如果需要了解關于sql server 2008中的cdc,請看這裡),本文假定讀者對cdc的工作方式已有所了解。^_^。

我們分三步完成執行個體:

1、準備基礎資料;

2、設計一個初始包;

3、在2的基礎上設計一個增量包。

首先請完成以下準備安裝:

(1)visual studio 2012或visual studio 2012 shell (isolated) redistributable package

(2)sql server data tools - business intelligence for visual studio 2012

(2)sql server 2012企業版或開發版

(3)示例資料庫adventureworksdw2012(本文必須,如果自建表則不必)

好了,開始第一步:

在SSIS 2012中使用CDC(資料變更捕獲)
在SSIS 2012中使用CDC(資料變更捕獲)

第二步:建立初始包

初始包包含如下邏輯:

(1)使用cdc control task标記初始加載開始lsn(use the cdc control task to mark the initial load start lsn)

(2)轉換所有源表資料到目标表(transfer all of the data from the source table into our destination table)

(3)使用cdc control task标記初始加載結束lsn(use the cdc control task to mark the initial load end lsn)

示例:

建立一個ssis項目,建立一個包“initial load”,如下圖:

在SSIS 2012中使用CDC(資料變更捕獲)

建立兩個cdc  control task,分别命名為“cdc control task start”和“cdc control task end”,分别對應屬性為“mark initial load start”和""mark initial load end"

連接配接管理器均為ado.net方式,其他屬性如下圖:

在SSIS 2012中使用CDC(資料變更捕獲)
在SSIS 2012中使用CDC(資料變更捕獲)

中間加入一個“data flow task”,屬性預設。

在SSIS 2012中使用CDC(資料變更捕獲)

此時,運作包,可見cdc_states有初始标記。

在SSIS 2012中使用CDC(資料變更捕獲)

第三步:建立增量包

增量包包含如下邏輯:

(1)建立一個源資料庫的連接配接管理器(create a connection manager for the source database)

(2)設定cdc運算符以擷取處理邊界(set the cdc control operation to get processing range)

(3)建立一個新的cdc狀态變量(cdc_state)(create a new cdc state variable (cdc_state))

(4)建立一個目标資料庫的連接配接管理器(create a connection manager for the destination database)

(5)選擇前面初始加載包建立的狀态表(select the state table (this was created by the initial load package) – [dbo].[cdc_states])

(6)設定狀态名稱(必須比對初始加載包使用過的狀态名稱,this must match what was used in the initial load package (cdc_state))

在項目中建立一個新包,命名為“incremental load”

在包的"control flow"視圖中,自上而下分别手動6個task,順序如下圖,除去上面用到的三個task,其餘均為execute sql task

在SSIS 2012中使用CDC(資料變更捕獲)

注意:cdc control task end的cdc運算符為mark process range,cdc control task start的cdc運算符為get process range

其餘4個execute sql task的sql語句如下:

最關鍵的一步,選中cdc control task start,并切換到data flow,自上而下分别拖動cdc source,cdc splitter transformer,三個ado.net destination,如下圖:

在SSIS 2012中使用CDC(資料變更捕獲)

其中三個的目标表分别為:[dimcustomer_destination],stg_dimcustomer_deletes,stg_dimcustomer_updates。

在SSIS 2012中使用CDC(資料變更捕獲)
在SSIS 2012中使用CDC(資料變更捕獲)

而cdc source的連接配接管理器屬性如下圖:

在SSIS 2012中使用CDC(資料變更捕獲)

此時,可運作增量包,但我們不會看到任何運作結果,因為此時我們還沒有進行資料的insert或update操作。

下來我們提供一個腳本,測試下效果:

此時,我們可以看到變更捕獲的結果:

在SSIS 2012中使用CDC(資料變更捕獲)

如果您覺得還不夠直覺,請"enable data viewer",

在SSIS 2012中使用CDC(資料變更捕獲)
在SSIS 2012中使用CDC(資料變更捕獲)

至此,一個ssis 2012中cdc的執行個體示範結束,如果還有進一步的研究,請移駕msdn,下面有連結。本文也提供示例項目包,以作研究之用。

本文參考:

邀月注:本文版權由邀月和csdn共同所有,轉載請注明出處。

助人等于自助!   [email protected]

繼續閱讀