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" 返回了消息 "登录超时已过期问题