Integration Services 可以從失敗點重新啟動失敗的套件,而不是重新執行整個套件。 如果封裝設定為使用檢查點,封裝執行的相關信息會寫入檢查點檔案。 重新執行失敗的封裝時,檢查點檔案會用來從失敗點重新啟動封裝。 如果封裝成功執行,則會刪除檢查點檔案,然後在下次執行封裝時重新建立。
在套件中使用檢查點可以提供下列優點。
避免重複下載和上傳大型檔案。 例如,使用 FTP 工作下載多個大型檔案的套件,可以在下載單一檔案失敗後重新啟動,然後只下載該檔案。
避免重複載入大量數據。 例如,在數據倉儲中,針對每個維度使用不同的「大批量插入」任務來向維度表執行大量插入的封裝,如果某個維度的插入失敗,則可以重新啟動,並且只有該維度會重新載入。
避免重複值的匯總。 例如,計算許多匯總的封裝,例如平均值和總和,使用個別的數據流工作來執行每個匯總,可以在計算匯總失敗之後重新啟動,而且只會重新計算該匯總。
如果封裝設定為使用檢查點,Integration Services 會擷取檢查點檔案中的重新啟動點。 失敗的容器類型,以及交易等功能的實作會影響檢查點檔案中記錄的重新啟動點。 變數的目前值也會在檢查點檔案中擷取。 不過,具有 Object 數據類型的變數值不會儲存在檢查點檔案中。
定義重新啟動點
封裝單一任務的任務宿主容器是可以重新啟動的最小原子工作單元。 Foreach 迴圈容器和事務容器也被視為原子性工作單位。
如果在交易容器執行時停止套件,該交易就會結束,而且容器所執行的任何工作都會回復到原狀。 重新啟動封裝時,會重新執行失敗的容器。 交易中容器的任何子容器完成情況不會被記錄在檢查點文件中。 因此,當套件重新啟動時,交易容器及其子容器會再次執行。
備註
在相同封裝中使用檢查點和交易可能會導致非預期的結果。 例如,當套件失敗並從檢查點重新啟動時,套件可能會重複已成功認可的交易。
For Loop 和 Foreach 循環容器不會儲存檢查點數據。 當封裝重新啟動時,For 迴圈和 Foreach 迴圈容器和子容器會再次執行。 如果迴圈中的子容器成功執行,就不會在檢查點檔案中記錄,而是會重新執行。 如需詳細資訊和因應措施,請參閱 For Loop 或 Foreach 迴圈容器專案不接受 SSIS 檢查點。
如果封裝重新啟動,則不會重載封裝組態,而是使用寫入檢查點檔案的組態資訊。 這可確保當封裝在失敗時重新執行時,會使用相同的組態。
封裝只能在控制流程層級重新啟動。 您無法在資料流中間重新啟動封裝。 為了避免重新執行整個數據流,封裝可能設計成包含多個數據流,每個數據流都使用不同的數據流工作。 如此一來,封裝就可以重新啟動,只重新執行一個數據流工作。
設定要重新啟動的套件
檢查點檔案包含所有已完成容器的執行結果、系統和使用者定義變數的目前值,以及封裝組態資訊。 檔案也包含封裝的唯一標識符。 若要成功重新啟動封裝,檢查點檔案中的套件標識碼和套件必須相符;否則重新啟動會失敗。 這可避免套件使用不同套件版本所寫入的檢查點文件。 如果封裝成功執行,重新啟動後,檢查點檔案會被刪除。
下表列出您設定為實作檢查點的套件屬性。
| 房產 | 說明 |
|---|---|
| 檢查點檔案名稱 | 指定檢查點檔案的名稱。 |
| 檢查點使用情況 | 指定是否使用檢查點。 |
| 儲存檢查點 | 指出套件是否儲存檢查點。 此屬性必須設定為 True,才能從失敗點重新啟動封裝。 |
此外,您必須針對您想要識別為重新啟動點之封裝中的所有容器,將FailPackageOnFailure屬性 true 設定為 。
您可以使用 ForceExecutionResult 屬性來測試套件中檢查點的使用。 藉由將工作或容器的 ForceExecutionResult 設定為 [失敗],您可以仿真即時失敗。 當您重新執行套件時,失敗的任務和容器將會被重新執行。
檢查點使用方式
CheckpointUsage 屬性可以設定為下列值:
| 價值觀 | 說明 |
|---|---|
Never |
指定不會使用檢查點檔案,而且封裝會從封裝工作流程的開頭執行。 |
Always |
指定一律使用檢查點檔案,而且封裝會從先前執行失敗的點重新啟動。 如果找不到檢查點檔案,封裝就會失敗。 |
IfExists |
指定如果存在檢查點檔案,則會使用檢查點檔案。 如果檢查點檔案存在,封裝會從先前執行失敗的點重新啟動;否則,它會從封裝工作流程的開頭執行。 |
備註
dtexec 的 /CheckPointing 選項相當於將封裝的SaveCheckpoints屬性設定為True,並將CheckpointUsage屬性設定為 Always。 如需詳細資訊,請參閱 dtexec Utility。
保護檢查點檔案
套件層級保護不包含檢查點檔案的保護,您必須個別保護這些檔案。 檢查點數據只能儲存在檔案系統中,而且您應該使用作系統訪問控制清單 (ACL) 來保護儲存盤案的位置或資料夾。 保護檢查點檔案很重要,因為它們包含封裝狀態的相關信息,包括變數的目前值。 例如,變數可能包含一個記錄集,其中包含許多數據列的私人數據,例如電話號碼。 如需詳細資訊,請參閱 存取封裝所使用的檔案。
設定檢查點屬性
外部資源
social.technet.microsoft.com 上的技術文章「故障轉移或失敗後自動重新啟動 SSIS 套件」
支援文章,SSIS 檢查點不適用於 For Loop 或 Foreach Loop 容器項目,位於 support.microsoft.com。