2012-11-08 43 views
2

我從管道分隔文件中提取並插入到SQL Server 2008 R2數據庫表中。我的整數列之一在它到達表格時不包含正確的值。SSIS平面文件值在數據流中被不正確地更改

我可以在我的第一個對象(平面文件源)後立即將數據查看器添加到數據流,並將數據與在記事本中打開的源文件並排比較。我的字符串列都正常,但這些唯一的七位數整數被替換爲三個值之一(但原始文件中有16K唯一行)。新值看起來像他們正在替換的那些,格式和範圍相同,但它們不出現在源文件中。他們實際上看起來好像他們已經被緩存在某個地方。

更多信息:源中的外部列是50個字符串,輸出列是4個字節的整數。文件源的連接字符串由基於由先前腳本設置的變量的表達式設置,該腳本在導入目錄中查找候選文件。沒有任何其他任務可以在之前或之後轉換或以其他方式修改數據;這個包純粹是另一個處理數據的過程的提取過程。被替換的值不會出現在包文件的XML中(我們搜索了它,以防我們遺留了一些與數據混淆的舊代碼)。

我可以重新創建任務,一切似乎都奏效,但我沒有看到任何可以解釋這一點的屬性的區別,然後我會擔心它會再次破壞。我真的很想知道這裏出了什麼問題。

任何想法可能會'腐敗'這樣的數據?

回答

1

這聽起來像它可能是一個代碼頁問題。我建議2個選項

  1. 變化從焦炭50連接管理器中的數據類型爲整數
  2. 你爲什麼不導入爲原來的50個字符的字符串,然後通過數據轉換轉換運行它。
0

對不起,我不能提前回復。我嘗試過各種源和外部數據類型和轉換的組合,但沒有成功。有時候這個列只是空的,或者是我提到的三個垃圾值之一。有趣的是,經過一番挖掘,一位同事注意到這三個十六進制值分別爲4d0000,4e0000和4f0000。不知道該讀什麼,但價值本身似乎並不意味着太多,某種顏色代碼;我希望他們會是一個祕密的錯誤代碼。無論如何,似乎有效的工作是完全刪除列並將它們添加回8字節整數(包括外部和輸出)。我將在接下來的幾天再次檢查它,並查看代碼頁的想法,如果我發現了其他內容,我會更新此問題。謝謝!