在運行時間,可執行檔(套件和 Foreach 迴圈、For 迴圈、序列和工作主機容器)會引發事件。 例如,發生錯誤時會引發 OnError 事件。 您可以為這些事件建立自定義事件處理程式,以擴充封裝功能,並讓封裝在運行時間更容易管理。 事件處理程式可以執行如下的工作:
當封裝或工作完成執行時,清除暫存數據記憶體。
擷取系統資訊,以在套件執行之前評估資源可用性。
當參考數據表中的查閱失敗時,重新整理數據表中的數據。
當發生錯誤或警告或工作失敗時,傳送電子郵件訊息。
如果事件沒有事件處理程式,事件就會引發至封裝中容器階層的下一個容器。 如果此容器具有事件處理程式,事件處理程式會執行以回應事件。 如果沒有,事件會傳遞到容器階層的上一級的容器。
下圖顯示包含一個執行 SQL 工作的 For 迴圈容器的簡單套件。
只有封裝具有一個事件處理程式,用於其 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。
相關工作
如需如何將事件處理程式新增至封裝的資訊,請參閱 將事件處理程式新增至封裝。