Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Campo varchar largo faz com que a conversão solicitada não seja suportada erro usando openquery com servidor vinculado MySQL


Em meus testes, descobri que adicionar CAST(field as char(4000)) também resolveu o problema.

Eu criei o seguinte em um banco de dados MySQL 5.1:
create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');

Quando executei o seguinte no SQL Server 2008 R2 SP1 (10.50.2500), usando o driver ODBC do MySQL de 64 bits, versão 5.1 ou 5.2w:
select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')

ele gera o erro:
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". 

mas se eu adicionar CAST :
select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')

então funciona. A conversão para char(4001) falhará.

Não está claro para mim de onde vem o limite de 4000 caracteres.