异构数据库的读取问题

[复制链接]
查看11 | 回复9 | 2008-4-7 19:47:40 | 显示全部楼层 |阅读模式
查询异构数据库出错,数据源数据类型为char,本地类型相同,但是读取时系统自动将char后面空格截断造成错误,请教大家怎样在目的数据库解决

Server: Msg 7347, Level 16, State 1, Line 1
OLE DB 提供程序 'Sybase.ASEOLEDBProvider' 返回了固定长度列 '[AAA].[user1].[dbo].[inv10100].purchaser' 的意外数据长度。预期的数据长度为 6。而返回的数据长度为 5。
OLE DB 错误跟踪[Non-interface error:Unexpected data length returned for the column:ProviderName='Sybase.ASEOLEDBProvider', TableName='[AAA].[user1].[dbo].[inv10100]', ColumnName='purchaser', ExpectedLength='6', ReturnedLength='5']。
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
没人知道么
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
AS400 DB2 + MS SQL 2000:
SELECT *
FROM OPENQUERY(as400, 'SELECT * FROM amp.prodcode') Rowset_1

SELECT *
FROM OPENQUERY(as400, 'SELECT left(ITD10,8) FROM amp.prodcode') Rowset_1

SELECT * FROM as400.S656129B.amp.prodcode aaa

以上三种方式都会出现楼主所提的错误信息(见附图)。
但改为
SELECT *
FROM OPENQUERY(as400, 'SELECT rtrim(ITD10) FROM amp.prodcode ') Rowset_1
就不会出错了。
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
附图在此。
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
用VARCHAR类型试下.
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
我也觉得用varchar试试看
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
谢谢,问题已经解决
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
最初由 springtide 发布
[B]谢谢,问题已经解决 [/B]

用的什么方式?难道你的数据查询的时候,必须得用到空格?
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
用varchar是没用的,因为发生在转换中间,后来我改为ODBC链接就Ok了
这种问题发生多次,包括大容量复制,有时OLEDB能做的ODBC会报错,有时又相反,这个东东好像和系统有关~~~
回复

使用道具 举报

千问 | 2008-4-7 19:47:40 | 显示全部楼层
与连接类型有关系!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行