首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

SQL Server Linked Server 訪問 Oracle 數據長度不定列報錯 7356 解決方案

     編輯:Oracle 資料庫基礎

錯誤現象

SELECT * FROM test..TEST.TEST1
-- Msg 7356, Level 16, State 1
-- OLE DB provider 'OraOLEDB.Oracle' reported inconsistent metadata.
-- Column 'DUMMY' (compile-time ordinal 1) was reported to have DBTYPE 129 at compile time and 130 at run time.

根因分析

  • Oracle 表中存在**無精度/長度不定**的數據類型(如 VARCHAR 未指定長度、NUMBER 未指定精度刻度)。
  • 編譯期元數據(DBTYPE 129)與運行期實際類型(DBTYPE 130)不一致。
  • 屬於 **Oracle Bug 3117040**,已在 **9.2.0.4.10** 修復。

解決路徑

  1. 升級 Oracle Client/Server 至 9.2.0.4.10 或更高版本(根治)。
  2. 臨時規避(不升級場景):
    在 Linked Server 查詢中**顯式列出列名**,避開無精度列;或建視圖轉換類型(CAST(col AS VARCHAR2(100)))後再查詢視圖。
  3. 建模規範:所有字符/數值類型**強制指定精度長度**(VARCHAR2(100), NUMBER(10,2)),杜絕裸類型。

驗證腳本

-- 確認問題列
SELECT column_name, data_type, data_length, data_precision, data_scale
FROM all_tab_columns@oralink
WHERE table_name = 'TEST1' AND owner = 'TEST';
-- 針對 data_length/precision 為 NULL 的列進行 CAST 或排除
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved