數據流任務對錯誤的處理,和控制流不同,在數據流中,主要是對于錯誤行的處理,一般通過Error Output配置。
1,操作失敗的類型:Error(Conversion) 和 Truncation。
2,錯誤處理方式:Fail Component,Ignore Failure 和 Redirect Row
3,Error Output增加兩個跟Error相關的Column:ErrorCode 和 ErrorColumn,這兩個Column的數據類型是DT_4
一,錯誤處理方式當遇到錯誤行時,對待錯誤行的方式有三種:
這三種處理錯誤的方式,隻有Fail Component 會導緻Data Flow 失敗,觸發OnError Event,并産生錯誤信息;Redirect Row 和 Ignore Failure 不會導緻任何組件失敗,因此,SSIS 不會抛出任何錯誤信息。
二,對Error Row的做 Redirect 處理有以下數據流設計:
1,配置Data Conversion 組件的Error Output
在Data Comversion 組件,進行一個轉換,将字符串類型轉換為int 類型,故意使其産生錯誤,配置錯誤處理方式是 Redirect Row
2,輸出錯誤代碼和錯誤列
在Advanced Editor中查看組件的錯誤輸出列:ErrorCode 和 ErrorColumn,這兩列都是 DT_I4類型,用于輸出 ErrorCode 和 發生錯誤的Column ID。
3,存儲Error Output
創建臨時表,存儲Data Conversion的Error Output
create table dbo.Test_ErrorOutput
(
ID int,
Env nvarchar(11),
ErrorCode int,
ErrorColumn int
)
将Data Conversion的 紅色Path(Error Output Path)鍊接到Error Output Destination。
查看 Error Output path的元數據,共有四列:Source的兩個(ID和 Env),ErrorCode 和 ErrorColumn,對于轉換失敗的Column(copy of env),并沒有出現在path中。對于轉換失敗的新增Column,Error Output不會輸出給下遊組件。
4,執行Package,查看執行結果
Redirect Row的錯誤處理方式不會導緻Data Flow Task的失敗,不會觸發OnError 事件,也不會導緻其子組件和整個Package的失敗。
三,結論數據流的錯誤處理方式,使得數據流組件能夠自行處理錯誤,不同的錯誤處理方式,産生的結果也是不同的:
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!