Mysql
 sql >> Database >  >> RDS >> Mysql

Il campo wide varchar causa l'errore di conversione richiesta non supportato utilizzando openquery con server collegato MySQL

Durante i miei test, ho scoperto che aggiungendo CAST(field as char(4000)) anche risolto il problema.

Ho creato quanto segue in un database MySQL 5.1:

create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');

Quando ho eseguito quanto segue su SQL Server 2008 R2 SP1 (10.50.2500), utilizzando il driver MySQL ODBC a 64 bit, versione 5.1 o 5.2w:

select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')

genera l'errore:

OLE DB provider "MSDASQL" for linked server "MYSQL" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 1
Cannot get the current row value of column "[MSDASQL].summary_text" from OLE DB provider "MSDASQL" for linked server "MYSQL". 

ma se aggiungo CAST :

select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')

allora funziona. Il cast su char(4001) avrà esito negativo.

Non mi è chiaro da dove provenga il limite di 4000 caratteri.