我正在使用一个Mssql实例并尝试使用openquery对一个LINKED SERVER进行INSERT,但是遇到了中文字符问题。
我的链接服务器连接到MySQL实例utf8_general_ci并构建它我使用MySQL odbc 5.3 unicode驱动程序,并且在其详细信息中我已经在charset中指定了utf8。
我将复制代码的主要部分:
insert openquery (MySQL_OBDC_UNICODE,'select id,chinesedescription
from chinesecodes')
(select id, descchinese from openquery (SQLSERVER_ODBC,'SELECT id,descchinese FROM tbarticles where idlanguage=''CN'''))
如果我在SQL SERVER Management Studio中只执行第二个选择指令,则中文描述显示正常,但是当我尝试将插入到MySQL链接服务器时,它显示以下内容:
提供者OLE DB" MSDASQL"链接的SERVER" MYSQL_OBDC_UNICODE"可以 没有INSERT INTO表" [MSDASQL]"由于列 " chinesedescription&#34 ;.值不符合列的限制 完整性。
如果您需要一些具体细节,请与我联系。
答案 0 :(得分:0)
在做了一些研究之后,我想出了我的链接服务器整理问题的解决方案:
1)我强制将源链接服务器中的排序规则收集到COLLATE Chinese_PRC_CI_AS。
(选择ID,从OPENQUERY(SQLSERVER_ODBC,&#39 descchinese; SELECT ID,descchinese FROM tbarticles的 Chinese_PRC_CI_AS 强>其中idlanguage ='' CN'' '))
2)在MySQL UNICODE ODBC DRIVER中,我将charset属性留空,因为在我使用UTF8之前我编码了两次。
希望对别人有所帮助!!