2014-10-31 12 views
7

Sto usando SSMA per MySQL per migrare da MySQL a MSSQL e su diversi tabelle sto ottenendo l'errore 22018. Dopo un sacco di chiacchiere ho scoperto che l'errore veniva generato a causa dell'archiviazione di caratteri russi in queste tabelle.SQL Server Migration Assistant (SSMA): ERRORE [22018] [MySQL] [ODBC 5.3 (a) Driver] [mysqld-5.1.51-community]

Ad esempio: Бухгалтерский учет

Ci sono altri caratteri non inglesi nelle tabelle, come Profissão Jurídica e stanno venendo attraverso OK.

L'errore è a che fare con le regole di confronto e il confronto sul tavolo MySQL è latin1_swedish_ci e la colonna che contiene i caratteri "stranieri" ha utf8_unicode_ci collazione su di essa ed è un varchar(255).

La tabella dei destinatari in MSSQL utilizza le regole di confronto predefinite del database (Latin1_General_CI_AS) e la colonna del destinatario è nvarchar(255).

Nel SSMA mappatura charset per latin1 è impostato il valore predefinito di CHAR/VARCHAR e ho provato avere questo set per NCHAR/NVARCHAR senza successo. Il mapping di tipo per varchar è impostato su nvarchar per tutte le istanze.

L'unica cosa vicina a una risposta che ho trovato è this posting. A meno che non mi manchi il punto della risposta, non riesco a vedere che c'è una conversione mancante - o c'è?

risposta

25

Dopo aver passato letteralmente ore a cercare di scoprire perché non ha funzionato, ho trovato la soluzione quando ho iniziato a rinunciare e utilizzare una tabella collegata in Accesso alla query pass-through in MSSQL.

Stavo usando il driver ODBC sbagliato. Risulta che ci sono 2 driver ODBC MySQL installati un ANSI e un driver Unicode. Stavo usando ANSI. Quando l'ho scambiato a Unicode tutto andava bene!

Unicode ODBC driver

+0

Spero che questo funziona anche per me – dresh

+0

funziona per me – dresh

Problemi correlati