共用方式為


數據中的錯誤處理

當數據流元件將轉換套用至數據行數據、從來源擷取數據或將數據載入目的地時,可能會發生錯誤。 錯誤經常因為非預期的數據值而發生。 例如,數據轉換失敗,因為數據行包含字串而不是數位,插入資料庫數據行會失敗,因為數據是日期,而且數據行具有數值數據類型,或表達式因為數據行值為零而無法評估,導致數學運算無效。

錯誤通常分為下列其中一個類別:

  • 數據轉換錯誤,如果轉換導致重大數位遺失、微不足道的數位遺失,以及字串截斷,就會發生此錯誤。 如果不支援要求的轉換,也會發生數據轉換錯誤。

  • 當在執行期間評估的表達式執行了無效操作,或因數據缺失或不正確導致語法錯誤時,就會發生表達式評估錯誤。

  • 查閱錯誤在查閱作業未能在查閱表格中找到匹配項時發生。

許多數據流元件都支援錯誤輸出,可讓您控制元件如何處理傳入和傳出數據中的數據列層級錯誤。 您可以藉由設定輸入或輸出中個別數據行的選項,指定元件在截斷或發生錯誤時的行為。 例如,您可以指定當客戶名稱資料被截斷時元件應該無法運作,但忽略另一欄位中包含較不重要資料的錯誤。

錯誤輸出可以連接至另一個轉換的輸入,或載入到與非錯誤輸出不同的目標位置。 例如,錯誤輸出可以連接到衍生欄位轉換,該轉換會為空白欄位提供一個字串。

下圖顯示簡單的數據流,包括錯誤輸出。

具有錯誤輸出的資料流

除了數據行之外,錯誤輸出還包含 ErrorCodeErrorColumn 資料行ErrorCode 資料行會識別錯誤,而 ErrorColumn 包含錯誤數據行的譜系標識符。 若要檢視這些資料行的元數據,請按下將錯誤輸出連接到數據流中下一個元件的路徑。 在某些情況下, ErrorColumn 數據行的值會設定為零。 當錯誤條件影響整個數據列,而不是單一數據行時,就會發生這種情況。 例如是在查找轉換中失敗的情況。

如需詳細資訊,請參閱 數據流Integration Services 路徑

如需 Integration Services 錯誤、警告和其他訊息的清單,請參閱 Integration Services 錯誤和訊息參考

錯誤和截斷選項

錯誤分為兩個類別之一:錯誤或截斷。 錯誤表示明確的失敗,併產生NULL結果。 這類錯誤可能包括資料轉換錯誤或表達式評估錯誤。 例如,嘗試將包含字母字元的字串轉換成數位會造成錯誤。 數據轉換、表達式評估,以及表達式結果指派給變數、屬性和數據行可能會因為不合法的轉換和不相容的數據類型而失敗。 如需詳細資訊,請參閱 轉換 (SSIS 運算式)表達式中的 Integration Services 數據類型,以及 Integration Services 數據類型

截斷比錯誤更不嚴重。 截斷會產生可能可使用或甚至可取的結果。 您可以選擇將截斷視為錯誤或可接受的條件。 例如,如果您要將 15 個字元的字串插入只有一個字元寬的數據行中,您可以選擇截斷字串。

您可以設定來源、轉換和輸出目標如何處理錯誤與截斷。 下表描述選項。

選項 說明
失敗元件 當發生錯誤或截斷時,資料流程工作將失敗。 失敗是錯誤和資料截斷時的預設狀態。
忽略失敗 會忽略錯誤或截斷,並將數據列導向至轉換或來源的輸出。
重新導向行 錯誤或截斷數據列會導向至來源、轉換或目的地的錯誤輸出。

新增錯誤描述

根據預設,錯誤輸出會提供數值錯誤碼,而且通常包含發生錯誤之數據行的標識符。 您可以使用 Script 元件,透過使用單行腳本呼叫 GetErrorDescription 介面的 IDTSComponentMetaData100 方法,將錯誤描述包含在額外的欄中。

組件腳本可以加入資料流的錯誤區段,並且可以插入於您希望擷取錯誤的資料流元件下游的任何地方,不過通常會放在將錯誤資料列寫入目的地之前。 如此一來,腳本只會查閱寫入之錯誤數據列的描述。 例如,數據流的錯誤區段可能會更正某些錯誤,而不會將這些數據列寫入錯誤目的地。 如需詳細資訊,請參閱 使用腳本元件增強錯誤輸出

設定錯誤輸出

另請參閱

資料流程
使用轉換技術來轉換數據
使用路徑連接元件
數據流工作
資料流程