OLE DB 提供程序'用于链接服务器返回的数据与预期的数据长度不匹配
OLE DB provider 'for linked server returned data that does not match expected data length for
我通过链接服务器从我的 sql 服务器 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。
你能试试这个吗?
SELECT *
FROM OPENQUERY(xxxx, '\
SELECT TRIM(corpo) AS test
FROM public.notification;
') AS oq
- 我更喜欢使用 OPENQUERY,因为它会将确切的查询发送到链接服务器以供其执行。
- MySQL 目前无法转换为
VARCHAR
数据类型,所以我使用 TRIM()
函数来欺骗它。
就我而言,我是通过视图读取数据的。显然,一列的数据大小在底层 table 中发生了变化,但视图仍向链接服务器报告了列的原始较小大小。解决方案是用MSSMS打开视图,然后重新保存。
我通过链接服务器从我的 sql 服务器 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。
你能试试这个吗?
SELECT *
FROM OPENQUERY(xxxx, '\
SELECT TRIM(corpo) AS test
FROM public.notification;
') AS oq
- 我更喜欢使用 OPENQUERY,因为它会将确切的查询发送到链接服务器以供其执行。
- MySQL 目前无法转换为
VARCHAR
数据类型,所以我使用TRIM()
函数来欺骗它。
就我而言,我是通过视图读取数据的。显然,一列的数据大小在底层 table 中发生了变化,但视图仍向链接服务器报告了列的原始较小大小。解决方案是用MSSMS打开视图,然后重新保存。