9

我正在使用 SSMA for MySQL 从 MySQL 迁移到 MSSQL,并且在几个表上我收到 22018 错误。经过大量的讨论后,我发现由于这些表中存储了俄语字符而产生了错误。

例如:Бухгалтерский учет

表格中还有其他非英文字符,例如Profissão Jurídicaand they are come through OK。

错误与排序规则有关,MySQL 表上的排序规则是latin1_swedish_ci,包含“外来”字符的列上有utf8_unicode_ci排序规则,并且是varchar(255).

MSSQL 中的收件人表使用数据库默认排序规则 ( Latin1_General_CI_AS),收件人列是nvarchar(255).

在 SSMA 中,字符集映射设置为latin1默认值CHAR/VARCHAR,我尝试将其设置为NCHAR/NVARCHAR但没有成功。所有实例的类型映射varchar都设置为nvarchar

我找到的唯一接近答案的是这个帖子。除非我错过了答案的重点,否则我看不到缺少转换-或者是否存在?

4

2 回答 2

34

在花费了数小时试图找出它为什么不起作用之后,当我开始放弃并在 Access 中使用链接表,然后对 MSSQL 进行直通查询时,我找到了解决方案。

我使用了错误的 ODBC 驱动程序。事实证明,安装了 2 个 MySQL ODBC 驱动程序ANSI和一个Unicode驱动程序。我正在使用ANSI. 当我把它换成Unicode一切都很好!

Unicode ODBC 驱动程序

于 2014-11-03T10:11:14.000 回答
2

根据 Microsoft SSMA 帮助指南,SSMA 仅与 MySQL ODBC 5.1 驱动程序(受信任)兼容。

我将 MYSQL ODBC 从 5.3 降级到 5.1,它工作正常。

MYSQL ODBC 5.1~ 链接 https://dev.mysql.com/downloads/file/?id=415029

在此处输入图像描述

于 2017-04-25T05:48:43.997 回答