Applies ToSQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

症状

此更新包含对 Microsoft SQL Server AlwaysOn 租约超时支持的以下改进:

  • 租约超时消息现在将显示并记录当前时间和预期续订时间。

  • 为租赁工作人员添加了一条新的错误消息,显然表明租赁超时的原因。

  • 添加了一个新的扩展事件和一个新的租赁工作者的环形缓冲区。 它们清楚地表明了租赁阶段。

解决方案

此问题首先已在 SQL Server 的以下 Service Pack 中修复。

有关 SQL Server 2012 Service Pack 3 (SP3)的详细信息,请参阅 在 SQL server 2012 Service Pack 3 中修复的 bug

SQL server 的 Service Pack 2 (适用于 sql Server 2014)关于 SQL Server 的 Service packService Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 我们建议为该服务包应用最新的服务包和最新的累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表1查找有关最新服务包和最新累积更新的详细信息。如何确定 SQL Server 及其组件的版本、版本和更新级别

更多信息

为了提供更多洞察力,已将新的错误消息添加到 SQL Server。 下表列出并解释了其中每一个。

错误

错误消息

原因

纠正措施

19419

可用性组 ' %1! ' 和 Windows Server 故障转移群集之间的租约续订失败,因为现有租约不再有效。

SQL Server 端的租约工作者没有按时安排处理来自群集的事件信号。

检查服务器上的 CPU 使用率,因为 SQL Server 租用工作人员似乎 starving。

19420

已明确要求可用性组 ' %1! ' 停止续订租约。

将可用性组脱机时,将停止租约续订。 这仅是信息性的。

19421

可用性组 ' ' %1! ' 和 Windows Server 故障转移群集之间的租约续订失败,因为未在租约时间间隔内续订。

群集端的租约帮助程序在时间上未向 SQL Server 租约工作者发出信号。

检查 WSFC 群集中对应的可用性组资源以查看是否报告了任何错误。

19422

由于出现 Windows 错误("% d"),在可用性组 ' ' %1! ' 和 Windows Server 故障转移群集之间续订租约失败。

由于 windows 错误,SQL Server 端上的租约工作人员无法续订租约。

请检查 windows 错误代码并采取纠正措施。

19423

可用性组 ' %1! ' 租约的租赁不再有效,无法开始租约续订过程。

当租约工作者开始处理在线呼叫提供的多余租约时间时,租约已过期。 这可能是由于安排问题所导致的。

检查服务器上的 CPU 使用率,因为 SQL Server 租用工作人员似乎 starving。

19424

可用性组 ' ' %1! ' ' 的租约工作者现在正在休眠在联机期间提供的多余租约时间(% u ms)。 这只是一条信息性消息。 无需用户操作。

信息. 分配给启动租约续订线程的额外联机时间,也可作为可用性组联机例程的一部分。

错误19419的示例: 如果你使用调试器附加到 SQL Server,则会中断 SQL Server 进程中的任何线程服务,直到你恢复 SQL Server 进程。 当您恢复 SQL Server 时,SQL Server 错误日志中将报告以下内容:

<日期时间> 服务器错误:19419,严重级别:16,状态:1。 <日期时间> 服务器 Windows Server 故障转移群集在租赁超时期限内未收到来自托管可用性组 "ag" 的 SQL Server 的流程事件信号。 <日期时间> 服务器错误:19407,严重级别:16,状态:1。 <日期时间> 服务器可用性组 "ag" 与 Windows Server 故障转移群集之间的租用已过期。 SQL Server 实例与 Windows Server 故障转移群集之间出现连接问题。 若要确定可用性组是否正确故障转移,请检查 Windows Server 故障转移群集中对应的可用性组资源。 <日期时间> 服务器 AlwaysOn:可用性组 "ag" 的本地副本将处于脱机状态,因为租约过期或租约续订失败。 这只是一条信息性消息。 无需用户操作。 <日期时间> 服务器可用性组 "ag" 中的本地可用性副本的状态已从 "PRIMARY_NORMAL" 更改为 "RESOLVING_NORMAL"。 由于启动、故障转移、通信问题或群集错误,副本状态已更改。 有关详细信息,请参阅可用性组仪表板、SQL Server 错误日志、Windows Server 故障转移群集管理控制台或 Windows Server 故障转移群集日志。

返回19419错误,因为 SQL Server 没有响应群集服务。 你还可能会收到租约超时错误消息(19407)以及19419错误。错误19424的示例:以下是在可用性组转换为主角色之前报告的多余租约时间消息:

<日期时间> 服务器可用性组 "ag" 的租约工作者现在已休眠在联机期间提供的多余租约时间(164766 ms)。 这只是一条信息性消息。 无需用户操作。 <日期时间> 服务器可用性组 "ag" 中的本地可用性副本的状态已从 "PRIMARY_PENDING" 更改为 "PRIMARY_NORMAL"。 由于启动、故障转移、通信问题或群集错误,副本状态已更改。 有关详细信息,请参阅可用性组仪表板、SQL Server 错误日志、Windows Server 故障转移群集管理控制台或 Windows Server 故障转移群集日志。

Availability_group_lease_expired和hadr_ag_lease_renewal XEvents 已得到改进,其中添加了可提供有关租赁条件的详细信息的数据点。 下表介绍了这些 XEvents 的改进:

XEvent

新列

说明

availability_group_lease_expired

current_time

租约过期的时间

availability_group_lease_expired

new_timeout

超时时间,当 availability_group_lease_expired 引发时,current_time 大于 new_timeout

availability_group_lease_expired

状态

租赁阶段:请参阅下面的 "租赁阶段" 表

hadr_ag_lease_renewal

状态

hadr_ag_lease_renewal

hadr_ag_lease_renewal

error_code

如果状态为 HadrLeaseRenewal_FailedWithWindowsError,则 error_code 是与失败相关联的 Windows 错误代码

租赁阶段和定义下表列出了可能的租约阶段并解释了它们的功能:

阶段名称

说明

HadrLeaseRenewal_LeaseWorkerStarted

已启动租约工作线程。

HadrLeaseRenewal_StartedExcessLeaseSleep

开始额外的租赁。 多余的租赁阶段记录在可用性组的联机阶段期间开始的租约线程。

HadrLeaseRenewal_FailedExcessSleepInvalidOnlineLease

如果租约已过期,我们将无法通过额外的租赁。

HadrLeaseRenewal_SkipExcessSleep

如果可用于睡眠状态的持续时间小于租约间隔,我们将跳过多余的租约。 无需再通过额外的租赁即可开始执行右手摇动过程。

HadrLeaseRenewal_ExcessSleepSucceeded

多余租赁成功。

HadrLeaseRenewal_RenewSucceeded

我们将在每次续订时看到此内容。

HadrLeaseRenewal_LeaseNotValid

等效于错误: 19419Windows Server 故障转移群集在租约超时期限内未收到来自 SQL Server 托管可用性组 ' %1! ' 的进程事件信号。

HadrLeaseRenewal_StopLeaseRenewal

你应该在故障转移事件期间看到此内容。

HadrLeaseRenewal_LeaseExpired

等效于错误:托管可用性组 ' ' %1! ' 托管的19421SQL 服务器未在租约超时期限内收到来自 Windows Server 故障转移群集的进程事件信号。

HadrLeaseRenewal_FailedWithWindowsError

由于 windows 错误,租赁续订失败。

有关详细信息,请参阅 改进的 AlwaysOn 可用性组租约超时诊断。有关租约超时的详细信息,请参阅 它的工作原理: SQL Server AlwaysOn 租约超时

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。