KB3181444 - 修正:針對次要資料庫執行的查詢一律會在 SQL Server 中重新編譯

Applies To
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 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)

症狀

假設您在 Microsoft SQL Server 2012、2014 或 2016 中使用「AlwaysOn 可用性群組」功能。 每次您對次要資料庫執行查詢時,都會重新編譯查詢。 發生此問題的原因是統計資料未正確地從主要伺服器傳播到次要伺服器。 如果您執行分析工具追蹤,您會發現與 StatMan 類似的情況,這表示 SQL Server 正在查詢統計資料:

從 step_direction ( (選取 StatMan ([SC0], [SB () 0000]) 以 NULL) [SB0000] 從 (選取 [xxx] 為 [SC0] 中的 [SC0] 為 [SC0]。[XXX] TABLESAMPLE SYSTEM (7.033584E-001 百分比) , (READUNCOMMITTED) ) _MS_UPDSTATS_TBL_HELPER AS ORDER BY [SC0], [SB0000] ) AS OPTION _MS_UPDSTATS_TBL (MAXDOP 1)

附註:如果停用「自動更新統計資料」選項或啟用「非同步自動更新統計資料」選項,則不會發生此問題。

解決方式

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

建議:安裝最新的 SQL Server 累積更新

SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 我們建議您下載並安裝 SQL Server 的最新累積更新:

參考資料

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