症状
假设你有在 Microsoft SQL Server 2014 中跨服务器 S1 和服务器 S2 部署的 AlwaysOn 可用性组。 主副本(S1)上检测到一个运行状况问题,如果将其配置为自动故障转移,则可用性组将 transits 到解决状态并开始故障转移。可用性组可能仍处于 "正在解决" 状态。 不生成的计划程序错误可能会出现在主副本(S1)或辅助副本(S2)的错误日志中:
-
当可用性组 transits 从主要副本开始解析时,主副本上可能会出现以下不生成的调度程序错误:
<> <time> Date spid<ID> 使用 "dbghelp" 版本 "4.0.5" <日期> <Time时间> spid> <0 ID> 使用 "dbghelp" 版本 "4.0.5" <日期> <使用 "dbghelp 的Time服务器>时间。 dll" 版本 "4.0.5" <日期> <时间> Server * * * 无法获取 spid 0> <0日期的线程上下文> <时间> 服务器 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Date * * Time * * * * * Date * * * * * * * * * * * Date * * Time * * * * * Date * * * * * * * * * * * * * * * *> <<>> <<ID><> server * <日期> <时间服务器 * 日期> <时间> server *> <0日期> <时间> server * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Date * * Time * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 982676> <> <2>> <<Time <日期> <时间> 服务器进程0:0:0 (0x11428)工作0x00000075CB92C160 似乎不会在计划程序0上生成。 线程创建时间:13011925023676。 大约使用线程 CPU:内核 0 ms,用户0毫秒。 流程利用率2%。 系统闲置84%。 间隔: 76880 ms。
-
如果将可用性组配置为自动故障转移且故障转移合作伙伴尝试传输到主角色,则辅助副本上可能会出现以下未生成的调度器错误:
<日期> <时间> spid<ID> 可用性组数据库 "agname" 正在将角色从 "解析" 更改为 "PRIMARY",因为镜像会话或可用性组因角色同步而发生故障。 这只是一条信息性消息。 No user action is required....<Date> <Time> Server Using 'dbghelp.dll' version '4.0.5'<Date> <Time> Server ***Unable to get thread context for spid 0<Date> <Time> Server * *******************************************************************************<Date> <Time> Server *<Date> <Time> Server * BEGIN STACK DUMP:<Date> <Time> Server * <Date> <Time> spid> <8 ID><Date> <Time> Server * Private server build.<Date> <Time> Server *<Date> <Time> Server * Non-yielding Scheduler> <2 Date> <Time> Server *<Date> <Time> Server * *******************************************************************************<Date> <Time> Server Stack Signature for the dump is 0x000000000000006D> <4 Date> <Time> Server External dump process return code 0x20000001.外部转储过程未返回错误。 <日期> <时间> 服务器进程0:0:0 (0x1e94)工作0X000000082F270160 似乎在计划程序0上不会产生任何错误。 线程创建时间:13059453624681。 大约使用线程 CPU:内核 0 ms,用户0毫秒。 流程利用率3%。 系统闲置84%。 间隔:70358毫秒<> 服务器进程0:0:0 (0X998)工作0x00000000B3F86160 的> <日期不会在计划程序2上显示。 线程创建时间:13059458965740。 大约使用线程 CPU:内核 0 ms,用户0毫秒。 流程利用率3%。 系统闲置83%。 间隔: 76913 ms。> 服务器进程0:0:0 (0x1a64)工作0x0000000B5E220160 的日期> <时间在计划程序3上似乎不起任何活动。 线程创建时间:13059466511951。 大约使用线程 CPU:内核 0 ms,用户0毫秒。 流程利用率3%。 系统闲置83%。 间隔: 76944 ms。
注意 此问题也会出现在 SQL Server 2012 中。
解决方案
应用此修补程序后,可以避免生成计划程序条件。此问题首先在 SQL Server 的以下累积更新中修复。
SQL Server 2014 累积更新5 /en-us/help/3011055
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。