2017-03-07 27 views
2

我有一個項目將數據從MySQL數據庫移動到SQL2012中的數據庫。現在沒有什麼花哨,只是一個數據的直接推送。我通過ODBC訪問MySQL實例,SQL DB是一個OLE連接。生成包時,ODBC源和OLE目標之間存在元數據不匹配。 (到目前爲止所有數據流都是這樣)消息指出「列」不能在unicode和非unicode字符串類型之間轉換。「BIML創建錯誤的元數據

檢查目標源&目標之間的路徑編輯器中的元數據,顯示問題源列正在被讀爲DT_STR,長度爲255,代碼頁爲1252.在MySQL中,它們被整理爲utf8_general_ci,它是unicode。

目標SQL數據庫表中的相應列是具有相同長度的varchar。

如果我打開OLE目標並單擊確定,元數據刷新並保存包後工作正常。這違背了使用BIML創建軟件包的全部目的,並且永遠需要打開50多個軟件包來刷新元數據並保存。

我已經試過幾件事情與行爲沒有任何變化:

  • 的Unicode和ANSI MySQL的ODBC驅動程序間切換。
  • 嘗試使目標列nvarchar。但我必須進行數據轉換轉換才能使其工作。
  • 將模式/表名包圍在OLEDBDestination的ExternalTableOutput元素的[]中。
  • 更改了SQL Native Client版本。
  • 將一個'COLLATE latin1_bin'語句放在從MySQL提取的源查詢末尾。
  • 最初是在VS2015 w/BimlExpress並在SSDT 2012 w/BimlExpress上嘗試過。 (順便說一句...必須安裝SSDT的2014年,以獲得BIML在SSDT2012編譯,因爲缺少Microsoft.DataWarehouse.Interfaces DLL)

任何想法都會受到歡迎,我幾乎在最後我的想象力在這一個。

謝謝!

+0

您是否嘗試過使用不同的連接類型,例如'ADO'? – iamdave

回答

0

我掙扎着類似的問題。最後,我必須打開記事本中生成的打包文件,並用文本文件中的wstr替換字節。我保存並重新打開,一切正常。

+0

@lmiguelvargasf這實際上也試圖提供一個答案。 –