KB4042232 - 修正:當你取消待處理查詢時,若缺少索引功能已啟用,SQL Server

套用到
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL 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 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

症狀

請考慮以下案例:

  • 你有一個儲存程序在 Microsoft SQL Server 中建立一個暫存資料表。

  • 你執行一個查詢,該查詢由儲存程序發出,且該查詢符合以下條件:

    • 查詢會參考由儲存程序建立的臨時資料表。
    • 查詢有一個 WHERE 子句,但不被任何索引涵蓋,且缺少索引的功能是啟用的。
  • 假設儲存程序是同時從多個實例呼叫的。 接著臨時資料表會頻繁建立與丟棄,導致對應索引的頻繁建立與刪除。

  • 在這種情況下,如果對儲存程序的待查詢被取消,你可能會收到存取違規錯誤。

解決方式

此問題已在以下 SQL Server 的累積更新中得到修正:

Cumulative Update 2 for SQL Server 2017

累積更新9 for SQL Server 2016 RTM

Cumulative Update 6 for SQL Server 2016 SP1

Cumulative Update 8 for SQL Server 2014 SP2

關於 SQL Server 的累積更新:

每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:

SQL Server 2017 最新累積更新

SQL Server 2016 最新累積更新

SQL Server 2014 最新累積更新

因應措施

解決這個問題的方法是啟用 TF () 2392 的追蹤標誌,這樣可以抑制遺失索引的收集。

更多資訊

欲了解更多關於缺失索引功能的資訊,請參考以下連結:

缺失索引功能

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語