【发布时间】:2014-08-05 14:32:25
【问题描述】:
这颗小宝石让我坚持了一段时间,但我仍然没有走得更远。
环境
- SSMS 2012 SP1(目标)(服务器 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 中的数据,更不用说将其 SELECT 到表中(我有一个脚本,可以根据原始 MySQL 铸件的一些规则来转换字段)
正如我所说,对于大多数其他领域来说,这不是问题。
RogueCol 的 MySQL 转换为 varchar(32767)
在 MSDASQL Provider 上启用的设置是:
- 嵌套查询
- 仅限零级
- 允许进程内
- 支持“点赞”
到目前为止,我已经尝试了很多我在各种论坛上“发现”的东西,包括:
- 在实际调用中进行CASTING、CONVERTING、LEFT、LTRIM(RTRIM())。
- 还尝试将其限制为 TOP 1 记录(LEN = 45,字符串中没有任何空格或外来字符)
- 设置 ANSI 版本的 ODBC 驱动程序
- ODBC 驱动程序中的各种设置(允许大结果集、更改字符集、将列限制为 32 位、用空格填充字符等)
我能否请教您的集体知识并请求一些进一步的建议,因为这让我发疯了?
非常感谢
【问题讨论】:
标签: mysql sql type-conversion linked-server msdasql