0

我有一个 MSSQL 数据库,它与 mssql 中的“链接服务器”连接到与 mysql 的 odbc 连接。MySQL 连接器版本为 5.2.3w,字符集设置为 UTF-8。

我尝试执行以下语句,例如在 mssql 中:

Insert Into openquery(VERBINDUNGSSERVERNAME, 'SELECT `D` FROM  `atd_ec_helper_delete`' )
Select * FROM ( 

Select 'Ä' as a
UNION
Select 'Ö' as a
UNION
Select 'ü' as a
UNION
Select '?' as a
UNION
Select '~' as a

) b

它添加了五行,但只插入了最后两行(?和〜)。前三行在“D”行中没有数据,它只是空的。它不为空。

我究竟做错了什么?谢谢您的帮助!

4

1 回答 1

0

重要的是使用“w”ODBC 驱动程序,而不是“a”版本。“w”版本用于 unicode 字符,“a”用于 ANSI。就我而言,我必须采用“w”版本。

字符串将不再剪切,但在我的情况下,使用 Openquery 特殊字符将被设置错误。解决方案是使用

EXEC('Insert Into ....') AT LINKEDSERVERNAME

不幸的是,反之亦然...

Insert Into LocalMSSQLTableName Select * FROM OPENQUERY(LINKEDSERVERNAME, 'Select * FROM MySQLTable') 

在我的情况下,唯一的解决方案是编码特殊字符以避免这些问题。

于 2013-08-29T07:21:23.747 回答