如標題…
Try了老半天
原來是要用odbc的方式,接下來我就把這個實作的過程log下來好了,如果以後有人需要的話或自己忘了的話,也可以參考..
在odbc設定完之後,有一個地方一定要設對,不然寫入的中文字還是亂碼,這個charset的部份一定要對應server的設定…目前我測試起來的結果是用utf8,中文是ok的。
odbc設定好了,測試連線也ok之後,回到ssis
我先將我自己測試的結果,一直是錯的訊息,先說一遍好了
我以為sybase有提供oledb的driver了,應該就用oledb的方式連線效能會比較快,但無奈ssis2008一直有問題,以下就看我慢慢說明囉!
我在我的dts中加入二個資料來源,一個是oledb,一個是odbc
然後拉一個
先測試看看單純的下刪除指令是否ok
在上圖中,我是指令oledb的資料來源,這個結果是ok的
接下來我要測試新增指令,一樣再拉另一個執行sql工作的控制項
內容如下,我也是用ole db
但執行結果卻變成..
看了一下訊息是..
[執行 SQL 工作] 錯誤: 執行查詢 "insert into collectorder(orderno,prod) values(1,'中..." 失敗,發生下列錯誤: "[Native Error code: 2432]
[DataDirect ADO Sybase Provider] Illegal byte sequence encountered in Unicode data during implicit conversion of VARCHAR value '中' to a UNIVARCHAR field.
"。可能的失敗原因: 查詢發生問題、未正確設定 "ResultSet" 屬性、未正確設定參數,或未正確建立連接。
上述的訊息,看來是無法轉換..varchar到univarchar,因為sybase對於中文字要開univarchar才會對,不過這應該也是跟server的設定有關係吧..
後來我再使用odbc來試看看,這次不同的是connectiontype的地方我是選ado.net,connection的部份則是選我設定的odbc資料來源,一樣的sql 語法
執行結果..
過了…
來看看寫入的值對不對,使用vs2008的伺服器總管來連接sybase資料庫,查詢資料,ok了!中文沒有亂碼
但odbc的charset是重點之一哦,如果沒有設定對,就算ssis執行成功,但資料寫入的還是亂碼哦..這點要注意