錯誤 0xC02020F6: 資料流程任務: 資料行 "column" 無法在 Unicode 和非 Unicode 字串資料類型之間轉換。
Excel 來源欄位預設為 Unicode (DT_WSTR/DT_NTEXT),目的地資料表欄位為非 Unicode (VARCHAR/TEXT),SSIS 預設不允許隱含轉換。
ALTER TABLE TargetTable ALTER COLUMN ColName NVARCHAR(255); -- 或 NTEXT
INSERT INTO FormalTable SELECT CAST(Col AS VARCHAR(...)) FROM #Temp;Copy Column 並指定輸出型別為 DT_STR (非 Unicode)。// Script Component (Transformation)
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
foreach (var prop in Row.GetType().GetProperties())
{
if (prop.PropertyType == typeof(string) && prop.Name.EndsWith("_Unicode"))
{
var nonUniProp = Row.GetType().GetProperty(prop.Name.Replace("_Unicode", ""));
if (nonUniProp != null) nonUniProp.SetValue(Row, (string)prop.GetValue(Row));
}
}
}
| 情境 | 建議方案 |
|---|---|
| 可修改正式表、長期專案 | 方案一 (改 NVARCHAR) |
| 正式表不可動、需稽核轉換邏輯 | 方案二 (暫存表 + SQL CAST) |
| 快速修復、欄位不多 | 方案三 (資料轉換元件) |