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

Posted

技术标签:

【中文标题】OLE DB 提供程序\'对于链接服务器返回的数据与预期的数据长度不匹配【英文标题】:OLE DB provider 'for linked server returned data that does not match expected data length forOLE DB 提供程序'对于链接服务器返回的数据与预期的数据长度不匹配 【发布时间】:2019-11-03 03:06:51 【问题描述】:

我通过链接服务器从我的 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。

【问题讨论】:

谁能帮帮我?我认为问题在于驱动程序配置或驱动程序本身:psqlodbc_x64.msi 没人?谁能帮帮我? 【参考方案1】:

你可以试试这个吗?

SELECT  *
FROM    OPENQUERY(xxxx, '\
SELECT  TRIM(corpo) AS test
FROM    public.notification;
') AS oq
    我更喜欢使用 OPENQUERY,因为它会将准确的查询发送到链接服务器以供其执行。 mysql 目前在转换为VARCHAR 数据类型时存在问题,所以我使用TRIM() 函数作弊。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于OLE DB 提供程序'对于链接服务器返回的数据与预期的数据长度不匹配的主要内容,如果未能解决你的问题,请参考以下文章

无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”中获取行

无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”的数据源对象

SQL Server:无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象

无法执行操作,因为链接服务器的 OLE DB 提供程序“SQLNCLI11”无法开始分布式事务

sqlserver远程连接中链接服务器"”的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期问题

Microsoft Office 12.0 Access 数据库引擎 OLE DB 提供程序问题