Applies ToSQL 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 的下列累積更新中修正:

      SQL Server 2017 的累積更新2

      SQL Server 2016 RTM 的累積更新9

      SQL Server 2016 SP1 累計更新6

      SQL Server 2014 SP2 累積更新8

每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 SQL Server 的最新累計更新:

SQL Server 2017 的最新累計更新

SQL Server 2016 的最新累計更新

SQL Server 2014 的最新累計更新

因應措施

此問題的因應措施是啟用追蹤旗標 (TF) 2392 ,這將會抑制遺失的索引集合。

其他相關資訊

若要取得遺失索引功能的詳細資訊,請參閱下列連結:

遺失索引功能

狀態

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

參考

瞭解 Microsoft 用於描述軟體更新的 詞彙

需要更多協助嗎?

想要其他選項嗎?

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

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