1. 程式人生 > >sql server2017從MySQL匯入資料到SQL Server時報錯:截斷行處理設定指定截斷時出錯解決方案

sql server2017從MySQL匯入資料到SQL Server時報錯:截斷行處理設定指定截斷時出錯解決方案

今天晚上在跑SQL Server代理作業時報錯:

錯誤: 0xC020902A,位於 credit_ious_instalment, 源 - 查詢 [2]: “源 - 查詢”由於發生截斷而失敗,而且針對“源 - 查詢.輸出[ADO NET 源輸出].列[ious_no]”的截斷行處理設定指定截斷時出錯。在指定元件的指定物件上出現截斷錯誤。
錯誤: 0xC02090F5,位於 credit_ious_instalment, 源 - 查詢 [2]: 源 - 查詢 無法處理這些資料。管道元件已從方法呼叫返回了 HRESULT 錯誤程式碼 0xC020902A。

在網上查下報錯原因,基本上都是說源資料表中的欄位長度與目標資料表的欄位長度不一樣導致,我在MySQL資料庫中找到報錯的表,發現欄位ious_no是varchar(22),SQL Server中表的欄位ious_no是[nvarchar](22),欄位型別和長度沒問題呀。。。
在這裡插入圖片描述


在這裡插入圖片描述

各種嘗試測試,最後發現在SSIS包輸入源–>右擊–>顯示高階編輯器中–>ADN NET輸出–>外部列和輸出列都為20導致,改成22就OK了
在這裡插入圖片描述

在這裡插入圖片描述

在這裡插入圖片描述

總結:出現這種報錯是因為欄位長度小了導致,排除方法:

  1. 先查源表中該欄位的型別和長度,目標表中的型別是否和源表字段型別一致、長度是否大於或等於源表字段
  2. 如果符合上面的條件,就要看SSIS包源的高階設定中外部列和輸出列的欄位長度是否大於或等於源資料表中的欄位長度
  3. 在資料庫中字串建議char、varchar、nchar、nvarchar