0

这颗小宝石让我坚持了一段时间,但我仍然没有走得更远。

环境

  • 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 位、用空格填充字符等)

我可以呼吁您的集体知识并请求一些进一步的建议,因为这让我发疯了吗?

非常感谢

4

1 回答 1

1

更新

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

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

工作岗位

于 2014-08-08T11:39:42.793 回答