徵狀
假設您使用的是 Microsoft SQL Server 2012、2014或2016中的 [AlwaysOn 可用性群組] 功能。 每當您針對次要資料庫執行查詢時,就會重新編譯查詢。 發生這個問題是因為統計不會正確地從主要伺服器傳播到次要伺服器。 如果您執行的是探測器追蹤,您會發現類似以下內容的StatMan ,這表示 SQL server 正在查詢統計資料:SELECT StatMan([SC0], [SB0000]) FROM (SELECT TOP 100 PERCENT [SC0], step_direction([SC0]) over (order by NULL) AS [SB0000] FROM (SELECT [xxx] AS [SC0] FROM [dbo].[xxx] TABLESAMPLE SYSTEM (7.033584e-001 PERCENT) WITH (READUNCOMMITTED) ) AS _MS_UPDSTATS_TBL_HELPER ORDER BY [SC0], [SB0000] ) AS _MS_UPDSTATS_TBL OPTION (MAXDOP 1) 注意: 如果您停用 自動更新統計 選項,或 以非同步方式啟用自動更新統計 選項,就不會發生這個問題。
解決方案
這個問題首先是在下列 SQL Server 累積更新中修正:
每個新的 SQL Server 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 我們建議您下載並安裝最新的 SQL Server 累積更新:
參考
瞭解 Microsoft 用於描述軟體更新的 詞彙 。