OLE DB 提供程序 ' 用于链接服务器返回的数据与预期的数据长度不匹配

Gab*_*rio 5 linked-server sql-server-2017

我通过链接服务器从我的 sql server 2017 Standard 查询远程 postgresql 服务器时出错

这是查询:

    SELECT CAST(test AS VARCHAR(MAX))  FROM  OpenQuery(xxxx, 
     'SELECT  corpo::TEXT as test From public.notification')
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

    Msg 7347, Level 16, State 1, Line 57
    OLE DB provider 'MSDASQL' for linked server 'xxx' returned data that                 does not match expected data length for 
    column '[MSDASQL].test'. The (maximum) expected data length is 1024,         while the returned data length is 7774.
Run Code Online (Sandbox Code Playgroud)

即使没有转换,错误仍然存​​在

对于 odbc 和链接服务器,我遵循了这个方便的指南

小智 2

你能试试这个吗?

SELECT  *
FROM    OPENQUERY(xxxx, '\
SELECT  TRIM(corpo) AS test
FROM    public.notification;
') AS oq
Run Code Online (Sandbox Code Playgroud)
  1. 我更喜欢使用 OPENQUERY,因为它会将精确的查询发送到链接服务器以供其执行。
  2. MySQL 目前在转换为VARCHAR数据类型方面存在问题,因此我使用TRIM()函数来欺骗它。