这颗小宝石让我坚持了一段时间,但我仍然没有走得更远。
环境
- 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 提供程序上启用的设置是:
- 嵌套查询
- 仅零级
- 允许进行中
- 支持“喜欢”
到目前为止,我已经尝试了很多我在各种论坛上“发现”的东西,包括:
- CASTING, CONVERTING, LEFT, LTRIM(RTRIM()) 在实际调用中。
- 还尝试将其限制为 TOP 1 记录(LEN = 45,字符串中没有任何空格或外来字符)
- 设置 ODBC 驱动程序的 ANSI 版本
- ODBC 驱动程序中的各种设置(允许大结果集、更改字符集、将列限制为 32 位、用空格填充字符等)
我可以呼吁您的集体知识并请求一些进一步的建议,因为这让我发疯了吗?
非常感谢