KB3051993 - 修正:當您使用 OLE DB 提供者從 Oracle 連結伺服器選取資料時,NUMBER 類型的值會被截斷

Applies To
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症狀

當您使用 Microsoft SQL Server 2012 或 SQL Server 2014 中的 OLE DB 提供者執行查詢以從 SQL Server 連結伺服器選取資料時,查詢結果中 NUMBER 類型資料行中的值可能會被截斷。

原因

發生此問題的原因是,具有未宣告精確度/縮放的 Oracle NUMBER 類型可能沒有與 SQL Server 資料類型的明確 1:1 對應。 在 SQL Server 2012 SP2 CU2 之前,SQL Server 會將這類值對應至字串,以確保不會造成精確度損失。 不過,如果查詢需要這類值的排序順序,則可能會導致不正確的結果。 在 SQL Server 2012 SP2 CU2 中,對應已變更為數值 (38, 0) ,以允許表示某些資料庫結構描述使用 NUMBER 而沒有精確度/縮放的大整數索引鍵。 當需要非整數值時,這會導致迴歸。

解決方式

套用此修正程式之後,系統會將精確度/縮放未知的 NUMBER 值視為 OLE DB 提供者的雙精度值。 如果精確度很重要,且值的範圍不夠大,您可以啟用新的追蹤旗標 7314,它開始將這類值視為數值 (38, 10) 。

此問題已先在下列 SQL Server 累積更新中修正。

SQL Server 2014 SP1 的累積更新 1 /zh-tw/help/3067839

2014 年 SQL Server 累積更新 8 /zh-tw/help/3067836

SQL Server 2012 SP2 的累積更新 6 /zh-tw/help/3052468

關於 SQL Server 的累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:

      

因應措施

若要解決此問題,請先將 Oracle 欄位從 NUMBER 類型轉換為 SQL Server 完全支援的資料類型。

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

協力廠商資訊免責聲明

本文提及的協力廠商產品是由與 Microsoft 無關的獨立廠商所製造。 Microsoft 不以默示或其他方式,提供與這些產品的效能或可靠性有關的擔保。