症状
请考虑以下情况:
-
你已部署 SQL Server AlwaysOn 可用性组和可用性组侦听器。
-
AlwaysOn 运行状况检测会检测托管主副本的 SQL Server 的运行状况问题,并开始将可用性组从主要角色转换为解析角色。 这部分操作涉及使可用性组侦听器资源脱机。
-
尝试停止侦听器资源的操作可能未完成,并且 SQL Server 无法生成转储诊断会在 SQL Server 错误日志中将崩溃报告为 "非生成计划程序"。
-
当尝试停止可用性组侦听器时,该操作可能会无限期崩溃。
在此方案中,可用性组中的可用性数据库保持恢复模式,并且无法联机。 您会收到以下错误:
<> <服务器名称> <时间服务器名称> * * * 无法获取 spid 0<的线程上下文> <时间> <服务器名称> <1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *> <8> <7> <> <> <2 * * *> <4 日期> <时间> <服务器名称> <9 *> <0> <> <3> <4> <> <> <9> <0> <> <server name> <5> <6> <> <><> <> <> 1068 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *>> <> <<
原因
出现此问题的原因是线程关闭侦听器资源冻结,但不会产生。 此非生成线程阻止了另一个处理器上的其他线程,该线程阻止了尝试恢复可用性数据库的其他线程。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2012 SP1 的累积更新9 /en-us/help/2931078
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。