在SSIS包中使用 Checkpoint從失敗處重新啟動包

來源:互聯網
上載者:User

使用SSIS做ETL的過程中會遇到各種各樣的錯誤,對於一些大資料量的Job失敗以後我們不希望重新運行,因為重新啟動並執行時間開銷是非常大的,我們只希望從失敗的部分開始運行,這樣可以省去很多的時間。

 

SSIS提供了Checkpoints的功能,可以捕獲檢查點檔案中的重新啟動點。失敗的容器類型以及功能(例如事務)的實現都會影響在檢查點檔案中所記錄的重新啟動點。檢查點檔案中還捕獲變數的當前值。

 

建立SSIS的時候需要制定 checkpoint檔案目錄,checkpoint的資訊會被儲存到這個xml檔案。當package啟動並執行時候,SSIS執行下面的步驟執行checkpoints:

 

1.    
建立xml檔案

2.    
記錄目前使用者定義的變數

3.    
記錄每一個成功的步驟

4.    
根據情況選擇執行下面的一個選項

A.    
當package由於錯誤停止,儲存checkpoint檔案

B.    
當整個Package執行成功時刪除checkpoint檔案

 

下面我建立了兩個Task,一個data flow緊接著執行一段SQL語句:

 

 

 

配置Checkpoints,有三個選項需要配置CheckpointFileName,CheckpointUsage,SaveCheckpoints

 

 

 

將使用Checkpoints的每個Task屬性FailPackageOnFailure設定為設定為True

 

 

 

現在我們測試失敗的狀況,我們可以更改第二個Task的ForceExecutionResults選項為Failure,這樣可以類比Task失敗。

 

 

 

執行一次,失敗,在目錄下面可以找到checkpoint的檔案:

 

 

 

將第二個Task的ForceExecutionResults值修改為None,重新執行

 

 

可以看到從上次錯誤的地方執行,只有第二個task執行成功。

 

 

主意事項:

不為 For 迴圈和 Foreach
迴圈容器儲存檢查點資料。當重新啟動包時,會再次運行 For
迴圈和 Foreach 迴圈容器及其子容器。如果迴圈中的子容器已成功運行,則不會將其記錄在檢查點檔案中,而是重新運行子容器

 

更多資訊參考 

通過使用檢查點重新啟動包

ImplementingCheckpoints in an SSIS Package

Faking successin SSIS

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.