链接服务器SQLServer和MySql以及不正确的字符串值的排序规则问题

时间:2015-05-21 12:48:16

标签: mysql sql-server

设置 让SQL Server作为链接服务器连接到Mysql。 SQL Server代理作业定期调用存储过程(SP)来检查SQL Server表中的标志,将未标记行的内容(通过临时表)传递给mySQL数据库中的SP,将原始SQL Server记录标记为他们走了。

问题 有时这一切(看起来)工作正常,其他时候,即使在SQLServer中设置了标志,mySQL数据库也不会获得更新数据。

查看服务器代理作业的历史记录,我看到如下错误

SQLSTATE 01000] (Error 7412)  Could not execute statement on remote server 'LINKED_MYSQL'.
 [SQLSTATE 42000] (Error 7215)  OLE DB provider "MSDASQL" for linked server "LINKED_MYSQL" returned message "[MySQL][ODBC 5.3(a) Driver][mysqld-5.6.21-log]Incorrect string value: '\xF8</val...' for column 'INFO' at row 1".

由于没有行INFO(任何地方),因此看起来像systemy可能是原因。我想知道Collat​​ions是否可能成为问题。

SQL Server是:SQL_Latin1_General_CP1_CI_AS

而Mysql是:utf8。

我无法更改SQL Server的排序规则。

是否可能是原因或如何调试其他解决方案的任何建议。在日志文件中找不到其他问题。

更新:因此错误消息显示'\ xF8&lt; / val'-存在问题 我的数据xF8中没有任何字符串,所以这里有些东西被替换。

更新2:是的,这与有时会转移的内容相符 - 有一个ø(即char \ xF8)。

更新的问题: 如何在不更改SQL SERVER的排序规则的情况下将SQL SERVER数据导入MySQL服务器?我已经尝试将MySQL DB和Table的排序规则更改为“默认排序规则:utf8mb4_general_ci / charset:utf8mb4

在mySQL中修复排序实际上解决了原来的问题 - 不过mySQL SP的一行

SET hostIP := (SELECT host from information_schema.processlist WHERE ID=connection_id());

导致问题再次出现。对上述内容进行评论,但请留意它。

尝试了

SET hostIP := (SELECT host COLLATE utf8_general_ci from information_schema.processlist WHERE ID=connection_id());

但没有雪茄

0 个答案:

没有答案