2014-10-31 10 views
7

Ich verwende SSMA für MySQL, um von MySQL nach MSSQL und auf mehreren zu migrieren Tabellen Ich bekomme den Fehler 22018. Nach vielen Muckings habe ich festgestellt, dass der Fehler aufgrund von russischen Zeichen in diesen Tabellen erzeugt wurde.SQL Server-Migrationsassistent (SSMA): FEHLER [22018] [MySQL] [ODBC 5.3 (a) Treiber] [mysqld-5.1.51-Community]

Zum Beispiel: Бухгалтерский учет

Es gibt andere nicht-englische Zeichen in den Tabellen, wie Profissão Jurídica und sie durch OK kommen.

Der Fehler ist mit Sortierung und Sortierungs auf der MySQL-Tabelle zu tun ist, latin1_swedish_ci und die Spalte, die das „fremde“ Zeichen hat auf sie utf8_unicode_ci Sortierungs halten und ein varchar(255).

Die Empfängertabelle in MSSQL verwendet die Standardsortierung der Datenbank (Latin1_General_CI_AS) und die Empfängerspalte ist eine nvarchar(255).

In SSMA die charset Mapping für latin1 wird auf die Standardeinstellung von CHAR/VARCHAR gesetzt und ich diesen Satz zu NCHAR/NVARCHAR ohne Erfolg, die versucht haben. Die Typzuordnung für varchar ist für alle Instanzen auf nvarchar festgelegt.

Das einzige nah an einer Antwort, die ich gefunden habe, ist this posting. Wenn ich nicht den Punkt der Antwort verpasse, kann ich nicht sehen, dass es eine fehlende Konvertierung gibt - oder gibt es?

Antwort

25

Nachdem ich buchstäblich stundenlang versucht habe herauszufinden, warum es nicht funktioniert habe, fand ich die Lösung, als ich anfing aufzugeben und eine verknüpfte Tabelle in Access auf die dann eine Pass-Through-Abfrage in MSSQL zu verwenden.

Ich verwendete den falschen ODBC-Treiber. Es stellt sich heraus, dass 2 MySQL ODBC-Treiber installiert sind ANSI und ein Unicode Treiber. Ich benutzte ANSI. Als ich es gegen Unicode getauscht habe, war alles gut!

Unicode ODBC driver

+0

ich hoffe, dass dies auch für mich arbeitet – dresh

+0

tut Arbeit für mich – dresh