MSSQL链接服务器到mysql实例排序规则字符问题

时间:2017-02-10 13:22:00

标签: mysql sql-server linked-server openquery

我正在使用一个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 ;.值不符合列的限制   完整性。

如果您需要一些具体细节,请与我联系。

1 个答案:

答案 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之前我编码了两次。

希望对别人有所帮助!!