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

问题描述 投票:0回答:2

这个小宝石已经让我坚持了一段时间了,但我仍然没有进一步前进。

环境

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

我正在尝试将表从 MySQL 移植到 SSMS 上。 大多数表都工作正常......直到我遇到一个转换> 8000 个字符的列。

当我遇到问题时,我尝试只选择有问题的列

运行一个简单的

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 提供程序上启用的设置是:

  • 嵌套查询
  • 仅零级
  • 允许进程内
  • 支持“赞”

到目前为止,我已经尝试了很多我在各种论坛上“发现”的东西,包括:

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

我可以利用你们的集体知识并请求一些进一步的建议吗,因为这让我发疯?

非常感谢

mysql sql type-conversion linked-server msdasql
2个回答
1
投票

更新

所以男孩女孩们,没有回应

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

工作工作


0
投票

如果链接服务器不可编辑,您始终可以在 OPENQUERY 中使用cast(RogueCol as text)

SELECT 
RogueCol
FROM OPENQUERY([LinkServer],
'
SELECT 
cast (RogueCol as text) as RogueCol
FROM public.MyTbl
')
© www.soinside.com 2019 - 2024. All rights reserved.