应用对象
SQL 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 租约超时可支持性的改进:

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

  • 为租约辅助角色添加了一条新的错误消息,明确指示租用超时的原因。

  • 为租用辅助角色添加了新的扩展事件和新的环形缓冲区。 这些项清楚地指示了租用阶段。

解决方法

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

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

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

更多信息

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

错误

错误消息

原因

纠正措施

19419

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

SQL Server端的租约辅助角色未及时安排处理来自群集的事件信号。

检查服务器上的 CPU 使用率,因为SQL Server租用辅助角色似乎正在耗尽。

19420

系统明确要求可用性组 '%.*ls' 停止租约续订。

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

19421

可用性组 '%.*ls' 与 Windows Server 故障转移群集之间的租约续订失败,因为续订未在租约间隔内发生。

群集端的租约帮助程序未及时向SQL Server租用辅助角色发出信号。

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

19422

可用性组 '%.*ls' 与 Windows Server 故障转移群集之间的续约失败,因为出现 windows 错误,错误代码 ('%d') 。

由于 windows 错误,SQL Server端的租约辅助角色无法续订租约。

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

19423

可用性组 '%.*ls' 租约不再有效,无法启动租约续订过程。

当租约工作者开始处理联机呼叫提供的超额租约时间时,租约已过期。 这可能是由于计划问题而发生的。

检查服务器上的 CPU 使用率,因为SQL Server租用辅助角色似乎正在耗尽。

19424

可用性组 '%.*ls' 的租约辅助角色现在处于睡眠状态, (%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”的本地副本 (replica) 脱机,因为租约过期或租约续订失败。 这只是一条信息性消息。 无需用户操作。 <日期时间> 服务器可用性组“ag”中本地可用性副本 (replica) 的状态已从“PRIMARY_NORMAL”更改为“RESOLVING_NORMAL”。 由于启动、故障转移、通信问题或群集错误,副本 (replica) 状态已更改。 有关详细信息,请参阅可用性组仪表板、SQL Server错误日志Windows Server故障转移群集管理控制台或Windows Server故障转移群集日志。

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

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

availability_group_lease_expired和hadr_ag_lease_renewal XEvents 已得到改进,并添加了提供有关租约条件的详细信息的数据点。 下表描述了对这些 XEvent 的改进:

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

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

HadrLeaseRenewal_StopLeaseRenewal

应在故障转移事件期间看到此事件。

HadrLeaseRenewal_LeaseExpired

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

HadrLeaseRenewal_FailedWithWindowsError

由于窗口错误,租约续订失败。

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

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

需要更多帮助?

需要更多选项?

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