【问题标题】:MySQL > SSMS 2012 Linked Server "Requested conversion is not supported."MySQL > SSMS 2012 链接服务器“不支持请求的转换。”
【发布时间】: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


    【解决方案1】:

    更新

    所以男孩女孩,没有回应

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

    工作岗位

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 2012-10-23
      • 1970-01-01
      相关资源
      最近更新 更多