Integration Services 事件處理常式
在執行階段,可執行檔 (封裝和「Foreach 迴圈」、「For 迴圈」、「時序」,以及工作主機容器) 會引發事件。例如,當發生錯誤時,會引發 OnError 事件。您可以建立這些事件的自訂事件處理常式,以擴充封裝功能,並使封裝在執行階段易於管理。事件處理常式可以執行下列工作:
封裝或工作完成執行後,清除暫存資料儲存。
擷取系統資訊,以在封裝執行之前評估資源可用性。
當查閱參考資料表失敗時,重新整理資料表中的資料。
當發生錯誤或警告時,或工作失敗時,傳送電子郵件訊息。
如果事件不具有事件處理常式,則該事件會被提升到封裝中容器階層上的下一個容器。如果此容器具有事件處理常式,則會執行事件處理常式,以回應該事件。若否,則該事件會被提升到容器階層上的下一個容器。
下圖顯示一個具有「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>。
|