共用方式為


Integration Services (SSIS) 事件處理常式

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

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

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

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

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

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

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

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

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

事件處理常式流程

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

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

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

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

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

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

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

事件處理常式內容

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

OnWarning

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

設定事件處理常式

您可以在 SQL Server Data Tools (SSDT) 的 [屬性] 視窗中,或以程式設計方式設定屬性。

如需有關如何在 SQL Server Data Tools (SSDT) 中設定這些屬性的詳細資訊,請參閱<設定工作或容器的屬性>。

如需有關以程式設計方式設定這些屬性的詳細資訊,請參閱 DtsEventHandler

相關工作

如需有關如何將事件處理常式加入封裝的詳細資訊,請參閱<將事件處理常式加入封裝中>。

相關內容

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

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


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