共用方式為


Integration Services (SSIS) 事件處理程式

在運行時間,可執行檔(套件和 Foreach 迴圈、For 迴圈、序列和工作主機容器)會引發事件。 例如,發生錯誤時會引發 OnError 事件。 您可以為這些事件建立自定義事件處理程式,以擴充封裝功能,並讓封裝在運行時間更容易管理。 事件處理程式可以執行如下的工作:

  • 當封裝或工作完成執行時,清除暫存數據記憶體。

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

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

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

如果事件沒有事件處理程式,事件就會引發至封裝中容器階層的下一個容器。 如果此容器具有事件處理程式,事件處理程式會執行以回應事件。 如果沒有,事件會傳遞到容器階層的上一級的容器。

下圖顯示包含一個執行 SQL 工作的 For 迴圈容器的簡單套件。

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

只有封裝具有一個事件處理程式,用於其 OnError 事件。 如果執行 SQL 工作時發生錯誤, OnError 封裝的事件處理程式就會執行。 下圖顯示導致 OnError 封裝之事件處理程式執行的呼叫順序。

事件處理程序流程

事件處理程式是事件處理程式集合的成員,而且所有容器都包含此集合。 如果您使用 SSIS 設計工具建立封裝,您可以在 SSIS 設計工具的 [封裝總管] 索引標籤上,查看事件處理程式集合的成員。

您可以透過下列方式設定事件處理程式容器:

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

  • 指出事件處理程式是否執行、事件處理程式失敗時封裝是否失敗,以及事件處理程式失敗之前可能發生的錯誤數目。

  • 指定要傳回的執行結果,而不是事件處理程式在運行時間傳回的實際執行結果。

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

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

事件處理程序內容

建立事件處理程式類似於建置封裝;事件處理程式具有工作和容器,這些工作和容器會依序排列成控制流程,而事件處理程式也可以包含數據流。 SSIS 設計工具包含用來建立自訂事件處理程式的 [事件處理程式 ] 索引標籤。 如需詳細資訊,請參閱 SSIS 封裝事件處理程式

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

Run-Time 事件

下表列出 Integration Services 提供的事件處理程式,並描述導致事件處理程式執行的運行時間事件。

事件處理程式 事件
OnError 事件 OnError 的事件處理器。 發生錯誤時,可執行檔會引發這個事件。
OnExecStatusChanged OnExecStatusChanged 事件的事件處理程式。 當可執行檔執行狀態變更時,就會引發此事件。
OnInformation OnInformation 事件的事件處理程式。 此事件會在可執行文件的驗證和執行期間引發,以報告資訊。 此事件只會傳達資訊,沒有錯誤或警告。
OnPostExecute OnPostExecute 事件的事件處理程式。 此事件會在可執行檔執行完成之後立即引發。
OnPostValidate OnPostValidate 事件的事件處理程式。 當可執行檔完成驗證時,就會引發此事件。
OnPreExecute OnPreExecute 事件的事件處理程式。 執行前,可執行檔會立即引發此事件。
OnPreValidate OnPreValidate 事件的事件處理程式。 當可執行文件開始驗證時,就會引發此事件。
OnProgress OnProgress 事件的事件處理程式。 此事件會在可執行檔取得可測量的進度時被引發。
OnQueryCancel OnQueryCancel 事件的事件處理程式。 可執行文件會引發此事件,以判斷它是否應該停止執行。
OnTaskFailed OnTaskFailed 事件的事件處理程式。 當工作失敗時,就會引發此事件。
變數值變更時 OnVariableValueChanged 事件的事件處理程式。 當變數的值變更時,可執行檔會引發這個事件。 事件是由定義變數的可執行檔所引發。 如果您將變數的 RaiseChangeEvent 屬性設定為 False,則不會引發這個事件。 如需詳細資訊,請參閱 Integration Services (SSIS) 變數
OnWarning OnWarning 事件的事件處理程式。 當發生警告時,可執行檔會引發此事件。

事件處理程序的設定

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

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

如需以程式設計方式設定這些屬性的相關信息,請參閱 DtsEventHandler

如需如何將事件處理程式新增至封裝的資訊,請參閱 將事件處理程式新增至封裝