I min test fandt jeg ud af, at tilføjelse af CAST(field as char(4000))
også løst problemet.
Jeg oprettede følgende i en MySQL 5.1-database:
create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');
Da jeg udførte følgende på SQL Server 2008 R2 SP1 (10.50.2500), ved hjælp af MySQL ODBC-driver 64-bit, enten version 5.1 eller 5.2w:
select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')
det genererer fejlen:
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".
men hvis jeg tilføjer CAST
:
select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')
så virker det. Casting til char(4001) vil mislykkes.
Det er ikke klart for mig, hvor grænsen på 4000 tegn kommer fra.