處理插入、更新與刪除

適用於:SQL ServerAzure Data Factory 中的 SSIS Integration Runtime

在執行變更資料增量載入的 Integration Services 封裝資料流程中,第二個工作是區分插入、更新和刪除。 然後,您可以使用適當的命令,將其套用到目的地。

注意

設計執行累加式變更資料載入之封裝資料流程的第一個工作是,設定執行擷取變更資料之查詢的來源元件。 如需此元件的詳細資訊,請參閱 擷取與了解變更資料。 如需建立可執行累加式變更資料載入之套件的完整程序描述,請參閱異動資料擷取 (SSIS)。

將易記值與個別的插入、更新與刪除產生關聯

在擷取變更資料的範例查詢中,cdc.fn_cdc_get_net_changes_<capture_instance> 函數僅會傳回名稱為 __$operation 之中繼資料的資料行。 此中繼資料行包含表示哪個作業造成變更的序數值。

注意

如需有關呼叫 cdc.fn_cdc_get_net_changes_<capture_instance> 函式之查詢的詳細資訊,請參閱 建立函式以擷取變更資料。

將序數值對應到其相應的操作,並不像使用該操作的助記符那麼容易。 例如,'D' 可以輕易地表示刪除作業,而 'I' 則表示插入作業。 在< 建立函數以擷取變更資料>主題中建立的範例查詢可以進行從序數值轉換為在新資料行中傳回之易記字串值的這個轉換。 下列程式碼區段會示範這項轉換:

select   
    ...  
    case __$operation  
        when 1 then 'D'  
        when 2 then 'I'  
        when 4 then 'U'  
        else null  
     end as CDC_OPERATION  

將條件式分割轉換設定為直接插入、更新與刪除

若要將變更資料的資料列直接轉換為三種輸出之一,「條件式分割」轉換最為理想。 此轉換只會檢查每個資料列中 CDC_OPERATION 資料行的值,然後判斷該變更為插入、更新還是刪除。

注意

CDC_OPERATION 資料行包含從 __$operation 資料行中之數值衍生的易記字串值。

使用條件式分割轉換來分割插入、更新和刪除,以便進行處理

  1. 在 [資料流程] 索引標籤上,加入「條件式分割」轉換。

  2. 將 OLE DB 來源的輸出連接到「條件式分割」轉換。

  3. 在 [條件式分割轉換編輯器]的下方窗格中,輸入下列三行以指定三種輸出

    1. 輸入一行,並使用條件 CDC_OPERATION == "I" 將插入的資料列導向插入作業的輸出。

    2. 輸入條件為 CDC_OPERATION == "U" 的一行,以將已更新的資料列導向更新輸出。

    3. 輸入一行並使用條件 CDC_OPERATION == "D",將已刪除的資料列導向刪除輸出。