錯誤訊息
錯誤 0xc020901c: 輸出列 "產品種類" 文本被截斷
錯誤 0xc020902a: 截斷導致失敗
錯誤 0xc0047038: SSIS PrimeOutput 失敗
Excel 欄位資料長度超過資料表對應欄位定義長度。
快速定位問題資料
- 在 Excel 新增輔助欄位,假設「產品種類」在 G 欄,資料表欄位長度 200:
=IF(LEN(G2)>200, "超長", "正常")
篩選「超長」列,檢查內容決定截斷或擴大資料庫欄位。
解決方案
方案一:擴大資料表欄位長度 (最簡單)
ALTER TABLE TempTable ALTER COLUMN [產品種類] NVARCHAR(500); -- 或 MAX
方案二:SSIS 封裝中設定錯誤輸出導向
- Excel 來源 → 錯誤輸出 → 截斷/錯誤:設為 導向重導向資料列 (Redirect Row)。
- 連接至「一般檔案目的地」或資料表記錄錯誤明細,事後人工處理。
方案三:資料流程中加入「衍生欄位」截斷
- 衍生欄位轉換:
LEFT([產品種類], 200) 強制截斷後再寫入。
- 缺點:資料遺失,需確認業務可接受。
方案四:預處理 Excel (Power Query / Python / C#)
- 匯入前先清洗:截斷、分割、標準化,再產出乾淨 CSV/Excel 供 SSIS 匯入。
預防措施
- 建立匯入暫存表,所有欄位用
NVARCHAR(MAX) 或足夠大長度,匯入後再驗證轉型寫入正式表。
- 資料字典規範欄位長度,前端輸入端同步限制長度。
- 自動化匯入流程加入長度檢查步驟,失敗時發送警報郵件含問題樣本。
核心對策:**先在 Excel 端用 LEN 函數快速定位超長資料,再決定擴大欄位、截斷或清洗**。