SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題

qdrzq發表於2015-02-16

近日,調整客戶供應鏈系統(基於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
真讓人匪夷所思.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29512902/viewspace-1437217/,如需轉載,請註明出處,否則將追究法律責任。

相關文章