testab中只有一個欄位coltest varchar(40),輸入一個UNICODE的字,查詢後出現錯誤
select * from openquery (ifx_v12,'select * from testab')
訊息 7339,層級 16,狀態 1,行 1 連結伺服器 'ifx_v12' 的 OLE DB 提供者 'MSDASQL' 傳回無效的資料給資料行 '[MSDASQL].coltest'。
若改用
execute(N'select * from bev') at ifx_v12
則可執行但回傳的字變成??了
Informix 12.10.FC3WE 64bit dynamic online , CLIENT_LOCALE、SERVER_LOCALE、DB_LOCALE皆為zh_TW.uft8
ODBC為 IBM INFOMRIX ODBC 4.10 FD3DE 64bit版本
測試改用OLE DB ,設好後有以下的錯誤。
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
Cannot initialize the data source object of OLE DB provider "Ifxoledbc" for linked server "ifx_v12". (Microsoft SQL Server, Error: 7303)
找了一些參考 http://www.sqlservercentral.com/Forums/Topic564076-17-1.aspx 也無法連結。
一直都是用ODBC設定LINKED SERVER,但之前的INFORMIX DB都是BIG5沒有問題,這次換成UNICODE版本後就無法正常使用OPENQUERY了。
參考幾篇討論,突然發現有人說SQL SERVER不支援UFT8??
再看了幾篇相關的討論文章,東拼西湊後,改回使用ODBC,最後算是找到解法了
1.先進入ODBC 64位元 設定,在Environment 頁籤下,Client Locale設為zh_TW.57372,Database Locale設為zh_TW.57372
2.在Advance頁籤中,勾選 Report Char columns as Wchar columns
3.在IBM Informix Client SDK 4.10 (64-bit)下開啟SetNet32 找到 GL_USEGLU將值設為1 (這個我在ODBC找不到可設定的地方,只能先在SetNet32 下設定)
4.重新啟動SQL SERVER (只要ODBC 參數或SetNet32 值有變動,最好都重啟一下SQL SERVER)
然後OPENQUERY中文字就正常啦,可以select 也可以insert。
再看了幾篇相關的討論文章,東拼西湊後,改回使用ODBC,最後算是找到解法了
1.先進入ODBC 64位元 設定,在Environment 頁籤下,Client Locale設為zh_TW.57372,Database Locale設為zh_TW.57372
2.在Advance頁籤中,勾選 Report Char columns as Wchar columns
3.在IBM Informix Client SDK 4.10 (64-bit)下開啟SetNet32 找到 GL_USEGLU將值設為1 (這個我在ODBC找不到可設定的地方,只能先在SetNet32 下設定)
4.重新啟動SQL SERVER (只要ODBC 參數或SetNet32 值有變動,最好都重啟一下SQL SERVER)
然後OPENQUERY中文字就正常啦,可以select 也可以insert。