设置 让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可能是原因。我想知道Collations是否可能成为问题。
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());
但没有雪茄