用于链接服务器的OLE DB提供程序'返回的数据与

时间:2019-06-20 10:01:52

标签: 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')

这是错误消息:

    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.

即使不进行转换,错误仍然发生

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

2 个答案:

答案 0 :(得分:1)

你可以试试吗?

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

答案 1 :(得分:1)

就我而言,我是通过视图读取数据。显然,基础表中一列的数据大小已更改,但视图仍向链接服务器报告该列的原始较小大小。解决方案是用MSSMS打开视图并再次保存。