2011-06-17 60 views
1

我們正在使用SQL Server 2008 R2標準版和鏈接服務器從其他Oracle數據庫獲取信息。我們鏈接服務器的提供商是OLE DB的Oracle提供商。鏈接服務器沒有從Oracle數據庫獲取行

我有這個查詢,我嘗試在SQL Server中運行。

select * from [HPROD]..[GTBUD].GT_BUD_COA_VW 

使用Oracle SQL Developer我可以看到表中有44,859條記錄。任何想法,爲什麼我不能獲取數據?我應該指出,HPROD鏈接服務器,我遇到的一個問題是運行Oracle 11g 64位11.2.0.1.0 Production。我們的SQL Server運行在Server 2008 R2 64框上。

有趣的是,我們有另一個鏈接的服務器叫做IRPROD,使用與HPROD相同的提供者。 IRPROD運行的是完全相同版本的Oracle,但我們沒有任何問題。一切運行良好。

此外,如果我嘗試使用OpenQuery,HPROD仍然不會顯示任何行。

select * from Openquery(HPROD,'select * from GTBUD.GT_BUD_COA_VW') 

我很茫然。我們需要能夠擊中這些表格。

+0

在那裏使用的任何'特殊'列數據類型?像LOB,LONG,Raw或類似的東西?當你只在「好」列上進行投影時,它會起作用嗎? '即SELECT id from ...'或類似 –

+0

沒有特殊的列類型,只是varchar2和日期。我確實嘗試選擇一個特定的列,但仍然是0行。 –

回答

0

我和我的同事一起創造了視圖。

該視圖有加入和where子句。他正在使用這樣的語法:

AND b.end_dt = '30-JUN-2012' 

當他改變格式使用託達特函數它的工作。

AND b.end_dt = TO_DATE('06/30/2012','MM/DD/YYYY') 

現在舊的方式在Oracle中工作得很好,它只在通過SQL Server中的鏈接服務器傳遞時才被禁止。

現在我們知道了。

0

嘗試指定模式名稱。

select * from 
[linkedServerName].[DatabaseName].[SchemaName].[TableName] 
1

驗證鏈接服務器是否指向您期望的數據庫(和登錄用戶名/架構)。

在Oracle方面,您可以檢查v $ session以查看您是否具有來自SQL Server節點的連接,並通過v $ sql查看發出了哪個查詢,完成了多少次提取以及返回了多少行。

相關問題