近日,调整客户供应链系统(基于SQL Server库展现网页页面,数据通过SQLServer链接服务器取Oracle库)数据同步的问题过程中,发现如下所述的奇怪现象.
特记录如下:
Oracle,A B两用户
A用户 有 TBLA1,TBLA2,TBLA3 三个以TBL开头的表
B用户 有 TBLB1,TBLB2 两个以TBL开头的表
A用户下,建视图 v_tblname 如下:
CREATE OR REPLACE VIEW V_TBLNAME AS
SELECT TABLE_NAME FROM USER_ALL_TABLES
WHERE TABLE_NAME like 'TBL%';
A用户下,为B用户建同义词
create synonym B.V_TBLNAME for A.V_TBLNAME;
此时,以B用户登录,
select * from V_TBLNAME;
因为是取自A用户的视图,所以查询到的结果是
TBLA1
TBLA2
TBLA3
在SQL Server上一端,建链接服务器
sp_addlinkedserver 'ORCL','ORACLE','MSDAORA','ORCL';
go
sp_addlinkedsrvlogin 'ORCL',FALSE,NULL,'B','passwordB';
go
这样,SQL Server中
select * from ORCL..B.V_TBLNAME ;
结果却是:
TBLB1
TBLB2
真让人匪夷所思.
在调整客户供应链系统数据同步的过程中, 发现了SQLServer与Oracle跨库同步时的一个奇怪现象:通过SQLServer链接服务器从Oracle库中查询表名时, 查询结果与预期不符。本文详细记录了该问题的复现步骤。


被折叠的 条评论
为什么被折叠?



