Tijdens mijn tests ontdekte ik dat het toevoegen van CAST(field as char(4000))
heeft het probleem ook opgelost.
Ik heb het volgende gemaakt in een MySQL 5.1-database:
create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');
Toen ik het volgende uitvoerde op SQL Server 2008 R2 SP1 (10.50.2500), met MySQL ODBC-stuurprogramma 64-bit, versie 5.1 of 5.2w:
select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')
het genereert de fout:
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".
maar als ik CAST
toevoeg :
select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')
dan werkt het. Casten naar char(4001) zal mislukken.
Het is mij niet duidelijk waar de limiet van 4000 tekens vandaan komt.