MySQL> SSMS 2012链接服务器“不支持请求的转换。”

时间:2014-08-05 14:32:25

标签: mysql sql type-conversion linked-server msdasql

这个小宝石让我一直在努力,而我现在还没有进一步前进。

环境

  • SSMS 2012 SP1(目标)(Server 2012 64位)
  • MySQL(来源)
  • 使用ODBC 5.3 64位Unicode驱动程序的链接服务器

我正在尝试将表从MySQL移植到SSMS上。 大多数表格工作正常......直到我点击了一个已投射的列> 8000个字符。

当我遇到问题时,我试图选择有问题的Columnm

运行简单的

SELECT RogueCol  FROM LinkServer...MyTbl

返回错误

OLE DB provider "MSDASQL" for linked server "LinkServer" returned message "Requested conversion is not supported.".
Msg 7341, Level 16, State 2, Line 1
Cannot get the current row value of column "[MSDASQL].RogueCol" from OLE DB provider "MSDASQL" for linked server "LinkServer". 

所以我尝试了

SELECT * FROM OPENQUERY(LinkServer, 'SELECT RogueCol  FROM MyTbl')

返回相同的错误

我完全感到困惑,因为我甚至无法查看SSMS中的数据,更不用说将它选入表格了(我有一个脚本可以根据一些基于MySQL原始版本的规则来转换字段)

正如我所说,对于大多数其他领域而言,这不是一个问题。

RogueCol的MySQL转换是varchar(32767)

MSDASQL Provider上启用的设置为:

  • 嵌套查询
  • 仅限零级
  • 允许进行
  • 支持'喜欢'

到目前为止,我已经尝试过一系列我发现过的东西'在各种论坛上,包括:

  • 实际通话中的CASTING,CONVERTING,LEFT,LTRIM(RTRIM())。
  • 尝试将其限制为TOP 1记录(LEN = 45,字符串中没有任何空格或外来字符)
  • 设置ODBC驱动程序的ANSI版本
  • ODBC驱动程序中的各种设置(允许大结果集,更改字符集,将列限制为32位,Pad char包含空格等)

我能否请求您的集体知识并请求一些进一步的建议,因为这让我疯狂?

非常感谢

1 个答案:

答案 0 :(得分:0)

更新

所以男人和女孩,没有回应

我最终不得不与负责MySQL DB的DBA交谈,并要求他将RogueCol的转换从varchar(32767)改为TEXT

工作岗位