这个小宝石已经让我坚持了一段时间了,但我仍然没有进一步前进。
环境
我正在尝试将表从 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 提供程序上启用的设置是:
到目前为止,我已经尝试了很多我在各种论坛上“发现”的东西,包括:
我可以利用你们的集体知识并请求一些进一步的建议吗,因为这让我发疯?
非常感谢
更新
所以男孩女孩们,没有回应
我最终不得不与负责 MySQL DB 的 DBA 交谈,并要求他将 RogueCol 的转换从 varchar(32767) 更改为 TEXT
工作工作
如果链接服务器不可编辑,您始终可以在 OPENQUERY 中使用cast(RogueCol as text)
SELECT
RogueCol
FROM OPENQUERY([LinkServer],
'
SELECT
cast (RogueCol as text) as RogueCol
FROM public.MyTbl
')