sql >> Base de Datos >  >> RDS >> Mysql

El campo varchar amplio provoca un error de conversión solicitada no admitida al usar openquery con un servidor vinculado MySQL

En mis pruebas, descubrí que agregar CAST(field as char(4000)) también resolvió el problema.

Creé lo siguiente en una base de datos MySQL 5.1:

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

Cuando ejecuté lo siguiente en SQL Server 2008 R2 SP1 (10.50.2500), usando el controlador MySQL ODBC de 64 bits, ya sea la versión 5.1 o 5.2w:

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

genera el error:

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". 

pero si agrego CAST :

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

entonces funciona La conversión a char(4001) fallará.

No tengo claro de dónde viene el límite de 4000 caracteres.