"NUM"列出问题了吧?你可以尝试不选择num列再试试例如:select 不要num列的其他列 from ...如果没问题,就检查num列.
插入数据后运行SELECT num, cls ,stat,src,vendor,wrh,psr,note,sumtotal,sumtax,rcvaddrFROM OPENQUERY(HD,'select * from HD4.AYY_ORDER') 无论有没有查询列 "NUM" ,得到都是消息 7399,级别 16,状态 1,第 1 行 链接服务器 "HD" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 报错。提供程序报告了意外的灾难性错误。 消息 7331,级别 16,状态 2,第 1 行 无法释放来自链接服务器 "HD" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的行。 消息 0,级别 20,状态 0,第 0 行 A severe error occurred on the current command. The results, if any, should be discarded. 查询: select cls ,stat,src,vendor,wrh,psr,note,sumtotal,sumtax,rcvaddr from HD..HD4.AYY_ORDER得到的是:消息 7356,级别 16,状态 1,第 1 行 链接服务器 "HDAPP" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 为列提供的元数据不一致。 对象 ""HD40"."AYY_ORDER"" 的列 "NUM" (编译时序号为 1)在编译时有 129 的 "DBTYPE",但在运行时有 130。
中间表还有其他的表也是使用varchar2(64)的但都没问题。就这表有问题,纠结啊
你何必如此纠结? --假设原来的表为TB create table tmp as select * from tb commit; 如果没有数据,则插入 insert into tmp select * from tmp commit;然后去对表tmp做测试,看是不是NUM列的问题.查对后,更改tb或者删除TB表,利用TMP生成tb drop table tb create table tb as select * from tmp
插入数据后运行SELECT num, cls ,stat,src,vendor,wrh,psr,note,sumtotal,sumtax,rcvaddrFROM OPENQUERY(HD,'select * from HD4.AYY_ORDER')
无论有没有查询列 "NUM" ,得到都是消息 7399,级别 16,状态 1,第 1 行
链接服务器 "HD" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 报错。提供程序报告了意外的灾难性错误。
消息 7331,级别 16,状态 2,第 1 行
无法释放来自链接服务器 "HD" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 的行。
消息 0,级别 20,状态 0,第 0 行
A severe error occurred on the current command. The results, if any, should be discarded.
查询:
select cls ,stat,src,vendor,wrh,psr,note,sumtotal,sumtax,rcvaddr from HD..HD4.AYY_ORDER得到的是:消息 7356,级别 16,状态 1,第 1 行
链接服务器 "HDAPP" 的 OLE DB 访问接口 "OraOLEDB.Oracle" 为列提供的元数据不一致。
对象 ""HD40"."AYY_ORDER"" 的列 "NUM" (编译时序号为 1)在编译时有 129 的 "DBTYPE",但在运行时有 130。
中间表还有其他的表也是使用varchar2(64)的但都没问题。就这表有问题,纠结啊
--假设原来的表为TB
create table tmp as select * from tb
commit;
如果没有数据,则插入
insert into tmp select * from tmp
commit;然后去对表tmp做测试,看是不是NUM列的问题.查对后,更改tb或者删除TB表,利用TMP生成tb
drop table tb
create table tb as select * from tmp