徵兆
請試想下列案例:
-
您在 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 用來描述軟體更新的 術語。