KB2809338 - 修复:SQL Server 2012 或 SQL Server 2014 实例上的高“日志写入等待”计数器值

应用对象
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

症状

        
假设启用了在 Microsoft SQL Server 2012 或 Microsoft SQL Server 2014 的实例中使用日志池的 AlwaysOn 可用性组等功能。 在这种情况下,SQL Server 实例上日志缓冲区的日志写入等待计数器具有较高的值。 您还将注意到动态管理视图 (DMV) 中 CMEMTHREAD 和 WRITELOG 等待类型的高值。 此外,还会生成微型转储文件。

注意:日志池是事务日志的内存中缓存。 此缓存的用途包括:优化恢复期间对日志的读取、事务复制中的回滚操作,以及 AlwaysOn 可用性组功能。

原因

出现此问题的原因是日志池使用指向所有数据库的 PMO) (内存对象的全局指针。

当许多线程尝试使用日志池写入日志时,所有线程都必须等待指向内存对象的指针,从而导致“症状”部分中描述的争用。

解决方法

SQL Server 2014 Service Pack 1

默认情况下,适用于 SQL Server 2014 的 Service Pack 1 包含此修补程序,您无需添加任何跟踪标志即可启用该修补程序。

SQL Server 2014

此问题已在 SQL Server 2014 的 RTM 版本中修复,但仍需要启用跟踪标志 T9024 和/或 8048 才能激活修补程序。 启用此跟踪标志后,SQL Server 实例将在节点级别对指向内存对象的指针进行分区。

便笺

  • 如果在启用跟踪标志 T9024 后问题仍然存在,还可以启用跟踪标志 T8048,它在 CPU 级别对指向内存对象的指针进行分区。
  • SQL Server 2014 Service Pack 1 (SP1) 包含此修补程序,您不必启用跟踪标志。

          

SQL Server 2012

            
请注意SQL Server 2012 Service Pack 3 (SP3) 包含此修补程序,您不必启用跟踪标志。

累积更新信息

SQL Server 2012 SP1 累积更新 3

此问题的修补程序已在累积更新 3 中首次发布。 有关如何获取 SQL Server 2012 SP1 的此累积更新程序包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2812412 SQL Server 2012 Service Pack 1 累积更新包 3 注意 由于版本是累积的,因此每个新的修补程序版本都包含前一个 SQL Server 2012 SP1 修补程序版本中包含的所有修补程序和所有安全修补程序。 建议应用包含此修补程序的最新修补程序版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2772858 在 SQL Server 2012 Service Pack 1 发布之后发布的 SQL Server 2012 内部版本注意:应用修补程序后,必须启用跟踪标志 T9024 才能激活修补程序。 启用此跟踪标志后,SQL Server 实例将在节点级别对指向内存对象的指针进行分区。

注意:如果在启用跟踪标志 T9024 后问题仍然存在,还可以启用跟踪标志 T8048,它在 CPU 级别对指向内存对象的指针进行分区。

修补程序信息

Microsoft 提供了一个受支持的修补程序。 但此程序只用于解决本文中提到的问题。 仅将此修补程序应用于遇到此特定问题的系统。

如果修补程序可供下载,则本知识库文章顶部的“修补程序下载可用”部分。 如果此部分不存在,请向 Microsoft 客户服务和支持部门提交请求以获取该修补程序。

注意 如果发生其他问题或需要进行任何故障排除,您应该另行创建服务请求。 对于此特定修补程序无法解决的其他支持问题和事项,将照常收取支持费用。 若要获取 Microsoft 客户服务和支持部门的完整电话号码列表或另行创建服务请求,请访问以下 Microsoft 网站:

/contactus/?ws=support 注意 “修补程序下载可用”窗体显示了修补程序的可用语言版本。 如果您找不到需要的语言,则说明该语言版本的修补程序未提供。

SQL Server 2012 的先决条件

若要应用此修补程序,必须在计算机上安装 SQL Server 2012 SP1。

重启要求

应用此修补程序后,无需重启计算机。 必须使用跟踪标志 T9024 重新启动 SQL Server。 有关如何使用启动跟踪标志配置 SQL Server 的详细信息,请参阅数据库引擎服务启动选项。

文件信息

此全局修补程序版本具有下表列出的文件属性 (或更高版本的文件属性) 。 这些文件的日期和时间以协调世界时 (UTC) 格式列出。 在查看文件信息时,文件时间将转换为本地时间。 要了解 UTC 与本地时间之间的时差,请使用“控制面板”中“日期和时间”项中的“时区”选项卡。