Integration Services 事件處理常式

在執行階段,可執行檔 (封裝和「Foreach 迴圈」、「For 迴圈」、「時序」,以及工作主機容器) 會引發事件。例如,當發生錯誤時,會引發 OnError 事件。您可以建立這些事件的自訂事件處理常式,以擴充封裝功能,並使封裝在執行階段易於管理。事件處理常式可以執行下列工作:

  • 封裝或工作完成執行後,清除暫存資料儲存。

  • 擷取系統資訊,以在封裝執行之前評估資源可用性。

  • 當查閱參考資料表失敗時,重新整理資料表中的資料。

  • 當發生錯誤或警告時,或工作失敗時,傳送電子郵件訊息。

如果事件不具有事件處理常式,則該事件會被提升到封裝中容器階層上的下一個容器。如果此容器具有事件處理常式,則會執行事件處理常式,以回應該事件。若否,則該事件會被提升到容器階層上的下一個容器。

下圖顯示一個具有「For 迴圈」容器的簡單封裝,該容器包含一個「執行 SQL」工作。

封裝、For 迴圈、工作主機和執行 SQL 工作

針對其 OnError 事件,僅封裝具有事件處理常式。如果在「執行 SQL」工作執行時發生錯誤,則會執行封裝的 OnError 事件處理常式。下圖顯示引發封裝執行 OnError 事件處理常式的呼叫順序。

事件處理常式流程

事件處理常式是事件處理常式集合的成員,所有容器都包含此集合。如果使用「SSIS 設計師」建立封裝,則您可以在「SSIS 設計師」之 [封裝總管] 索引標籤上的 [事件處理常式] 資料夾中,查看事件處理常式集合的成員。

您可以利用下列方式設定事件處理常式容器:

  • 指定事件處理常式的名稱和描述。

  • 指出是否執行事件處理常式,如果事件處理常式失敗則封裝是否也將失敗,以及事件處理常式失敗之前可發生錯誤的數目。

  • 指定要傳回的執行結果,而非事件處理常式在執行階段傳回的實際執行結果。

  • 指定事件處理常式的交易選項。

  • 指定事件處理常式使用的記錄模式。

事件處理常式內容

建立事件處理常式與建立封裝相似;事件處理常式具有工作和容器,它們會循序進入控制流程,並且事件處理常式還可以包含資料流程。「SSIS 設計師」包含 [事件處理常式] 索引標籤,用以建立自訂事件處理常式。如需詳細資訊,請參閱<加入封裝事件處理常式>。

您還可以程式設計方式建立事件處理常式。如需詳細資訊,請參閱<以程式設計方式處理事件>。

執行階段事件

下表列出 Integration Services 所提供的事件處理常式,並描述引發事件處理常式執行的執行階段事件。

事件處理常式

事件

OnError

OnError 事件的事件處理常式。當發生錯誤時,可執行檔會引發此事件。

OnExecStatusChanged

OnExecStatusChanged 事件的事件處理常式。當可執行檔的執行狀態變更時,它會引發此事件。

OnInformation

OnInformation 事件的事件處理常式。在驗證和執行可執行檔以報告資訊期間,會引發此事件。此事件僅傳遞資訊,而不傳遞錯誤或警告。

OnPostExecute

OnPostExecute 事件的事件處理常式。可執行檔完成執行後,它會立即引發此事件。

OnPostValidate

OnPostValidate 事件的事件處理常式。可執行檔的驗證完成後,它會引發此事件。

OnPreExecute

OnPreExecute 事件的事件處理常式。可執行檔執行之前,它會立即引發此事件。

OnPreValidate

OnPreValidate 事件的事件處理常式。可執行檔驗證開始時,它會引發此事件。

OnProgress

OnProgress 事件的事件處理常式。可執行檔的進度可測量時,它會引發此事件。

OnQueryCancel

OnQueryCancel 事件的事件處理常式。可執行檔會引發此事件,以判斷其是否應停止執行。

OnTaskFailed

OnTaskFailed 事件的事件處理常式。工作失敗時,它引發此事件。

OnVariableValueChanged

OnVariableValueChanged 事件的事件處理常式。當變數變更時,可執行檔會引發此事件。定義變數所在的可執行檔會引發此事件。如果您將變數的 RaiseChangeEvent 屬性設定為 False,則不會引發此事件。如需詳細資訊,請參閱<Integration Services 變數>。

OnWarning

OnWarning 事件的事件處理常式。當發生警告時,可執行檔會引發此事件。

設定事件處理常式

您可以在 Business Intelligence Development Studio 的 [屬性] 視窗中或以程式設計方式設定屬性。

如需有關如何在 Business Intelligence Development Studio 中設定這些屬性的詳細資訊,請參閱<如何:設定工作或容器的屬性>。

以程式設計方式設定事件處理常式

如需可透過程式設計方式設定這些屬性的詳細資訊,請參閱<DtsEventHandler>。

Integration Services 圖示 (小) 掌握 Integration Services 的最新狀態

若要取得 Microsoft 的最新下載、文件、範例和影片以及社群中的選定解決方案,請瀏覽 MSDN 或 TechNet 上的 Integration Services 頁面:

若要得到這些更新的自動通知,請訂閱該頁面上所提供的 RSS 摘要。