Lors de mes tests, j'ai trouvé que l'ajout de CAST(field as char(4000))
a également résolu le problème.
J'ai créé ce qui suit dans une base de données MySQL 5.1 :
create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');
Lorsque j'ai exécuté ce qui suit sur SQL Server 2008 R2 SP1 (10.50.2500), en utilisant le pilote MySQL ODBC 64 bits, version 5.1 ou 5.2w :
select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')
il génère l'erreur :
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".
mais si j'ajoute CAST
:
select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')
alors ça marche. La diffusion vers char(4001) échouera.
Je ne comprends pas d'où vient la limite de 4 000 caractères.