我正在尝试使用openquery将一个表从MySql迁移到MSSQL,但我一直收到以下错误消息:
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].description" from OLE DB provider "MSDASQL" for linked server "MYSQL". 我尝试运行的SQL查询:
insert into dbo.tickets (id, description, createdAt)
select * from openquery(MYSQL, 'select * from mydb.tickets')使用openquery时,我已经复制了几个表,但这一张把我给骗了。
在数据库的两端,description字段都是varchar(8000)。在MySql中,没有任何行的description为null,最长的description只有5031个字符。
我尝试使用相同的数据结构在MySql中创建一个新视图,但得到了相同的错误。我无法确定哪一行包含无效的description字段,因为该表包含的行超过65000行。
我还尝试将数据转储到SQL文件中,但在Management Studio中获得了OutOfMemoryException。转储的sql文件本身大约为60 MB。
有什么建议或其他方法来迁移这些数据吗?
提前感谢!
发布于 2012-04-12 20:13:59
通过在MySql和MSSQL端将数据类型更改为TEXT,我设法解决了这个问题。
发布于 2013-06-06 22:38:21
在我的测试中,我发现添加CAST(field as char(4000))也解决了这个问题。
我在MySQL 5.1数据库中创建了以下内容:
create table tmp_patrick (summary_text varchar(4096));
insert into tmp_patrick values ('foo');当我在SQL Server2008 R2 SP1 (10.50.2500)上使用64位MySQL ODBC驱动程序执行以下命令时,版本为5.1或5.2w:
select * from openquery(MYSQL, 'select summary_text from scratch.tmp_patrick')它会生成以下错误:
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". 但是如果我加上CAST
select * from openquery(MYSQL, 'select CAST(summary_text as char(4000)) from scratch.tmp_patrick')然后它就起作用了。转换为char(4001)将失败。
我不清楚4000个字符的限制是从哪里来的。
https://stackoverflow.com/questions/10122693
复制相似问题