症状
假设你使用 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 用于描述软件更新的 术语 。