【茶包射手日記】ORACLE Linked Server查詢出現長度錯誤

同事報案: 在SQL 2008 R2使用Oracle Provider for OLE DB建立Linked Server,執行SELECT * FROM ORASVR1..SCHEMANAME.TABLNAME時出現以下錯誤:

The OLE DB provider "OraOLEDB.Oracle" for linked server "ORASVR1" supplied inconsistent metadata for a column. The column "COLNAME" (compile-time ordinal 9) of object ""SCHEMANAME"."TABLENAME"" was reported to have a "LENGTH" of 30 at compile time and 60 at run time.

但若使用OPENQUERY則可順利執行:
SELECT * FROM OPENQUERY(ORASVR1, 'SELECT * FROM ORASVR1..SCHEMANAME.TABLNAME')

過往經驗,此問題多半與使用的Data Provider版本有關。而有趣的是,出問題的機器就是稍早PO文提到的那台新裝Oralce 11g Client測試機,讓我懷疑起Oracle 11g OLE DB... (今天Oracle Client算是在我的管區犯下連續縱火案了 XD)

於是我試著重新註冊9.2版的OLEDB元件(regsvr32 x:\oracle\ora92\bin\oraoledb.dll),LENGTH錯誤立即消失。為了求證起見,再次註冊11g版OLEDB(regsvr32 x:\oracle\product\11.2.0\client_1\bin\oraoledb11.dll),LENGTH不符問題再度出現。因此歸納出結論,該問題與11.2的OLE DB有關,先換回9.2版讓工作可順利進行。至於是特定環境匹配問題,還是Oracle 11g OLE DB與SQL 2008 R2水土不服? 暫無暇深入調查,就留待有類似環境的熱心朋友幫忙測試回報,我再整理。

歡迎推文分享:
Published 23 September 2010 09:31 PM 由 Jeffrey
Views: 7,832



意見

# Yuta said on 05 March, 2018 05:49 AM

謝謝您的分享,經測試ORACLE 12C 的Client也行,就是不能用11G的.

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<September 2010>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication