Applies ToSQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1

徵兆

請試想下列案例:

  • 您在 Microsoft SQL Server 2016 中使用設定為 130 的相容性層級資料庫。

  • 您會執行存取欄市集索引和資料列存放區索引或堆集的查詢,並包含 WHERE 子句) (篩選述詞。

在此案例中,SQL Server將無法將篩選述詞推送到資料表或索引掃描 (資料來源運算子,或搜尋) 。 這可能會導致查詢效能過差。

此外,如果查詢使用運算式 (例如類型轉換) 其正確性取決於篩選的資料 (例如,char 資料表資料行會轉換為 int,但只有值子集包含有效的 int 標記法,而此子集是由篩選述詞) 識別,則查詢可能會失敗,而資料轉換錯誤類似下列其中一項:

將 Varchar 值 '0.5' 轉換為資料類型 int 時,Msg 245、層級 16、狀態 1、行 20 轉換失敗。Msg 8114、層級 16、狀態 5、行 34 錯誤將資料類型 Varchar 轉換為 Bigint。

解決方案

此問題已在下列 SQL Server 的累積更新中修正: SQL Server 2016 SP1 的累積更新 2       

附註您必須啟用查詢最佳化工具 Hotfix,此修正才會生效。

您可以使用下列其中一個選項來啟用查詢最佳化工具 Hotfix:追蹤標幟4199、SQL Server 2016 和更新版本) 提供的 [資料庫範圍設定] 設定 QUERY_OPTIMIZER_HOTFIXES=ON (,或USE_HINT在 SQL Server 2016 SP1 和更新版本) 中 ([ENABLE_QUERY_OPTIMIZER_HOTFIXES] 查詢選項。

每個SQL Server的新累積更新都包含所有 Hotfix 以及先前累積更新隨附的所有安全性修正。 查看 SQL Server 的最新累積更新: SQL Server 2016 的最新累計更新

狀態

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

參考資料

瞭解 Microsoft 用來描述軟體更新的 術語

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。