使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

请考虑以下情况:

  • 你正在运行 Microsoft SQL Server 2014 或 Microsoft SQL Server 2012 Service Pack 2 (SP2),该服务器上作为滚动升级的一部分托管可用性组的辅助副本。

  • 您已对 SQL Server 安装应用了下列更新之一:

    • SQL Server 2014 累积更新5

    • SQL Server 2012 Service Pack 2 累积更新4

    • SQL Server 2012 Service Pack 2 累积更新3

    重要说明 本文中提及的修补程序替代这些累积更新。 如果尚未安装这些更新,请执行此操作。

  • 若要完成累积更新的安装,请重新启动此辅助副本。

  • 将已更新的辅助副本转移到主角色的可用性组进行故障转移。

在这种情况下,你可能会在运行 SQL Server 的服务器上遇到以下一个或多个症状,并且现在承载的是你的可用性组的主副本:

  • 辅助副本报告为 "未同步"。

  • 查询 sys.dm_exec_requests 时,注意到用户会话和其命令报告为 "DB_STARTUP" 的会话之间有间歇性的锁定阻止。 你还可能会注意到 检查点 和 DB_STARTUP 命令之间的阻止。

  • 在 SQL Server 错误日志中报告涉及已恢复其中一个可用性数据库的会话的死锁。 这些日志类似于以下内容: <date/time> spid<xx> Recovery is writing a checkpoint in database <dbname/dbid>. This isan informational message only. No user action is required.<date/time> spid<xx> Recovery completed for database <dbname/dbid> in <x> second(s) (analysis<x> ms, redo <x> ms, undo <x> ms.) This is an informational message only. No user action is required.…<date/time> spid<xx> Error: 1205, Severity: 13, State: 28.<date/time> spid<xx> Transaction (Process ID <xx>) was deadlocked on lock resources with anotherprocess and has been chosen as the deadlock victim. Rerun the transaction.

  • 如果你的可用性数据库已启用 Microsoft SQL Server Service Broker,则可能无法成功处理你的可用性数据库中的消息。 如果启动探查器跟踪工具,然后捕获 "Broker:消息分类" 事件,则会捕获以下事件:

    9791,在发送方数据库中禁用 broker

注意 这不是系统化问题。 你可以在不遇到此问题的情况下对 AlwaysOn 配置应用这些累积更新。 如果你已应用这些累积更新,但你未注意到此问题,你的系统不会受到影响,并且此信息不会应用到你。

原因

出现此问题的原因是系统线程和用户连接有时会出现争用情况。 这可防止累积更新的修补逻辑获取完成更新过程所需的锁。

解决方案

若要解决此问题,请应用以下 关键的按需(货到付款) 修补程序:

3034679 修复: AlwaysOn 可用性组可能会报告为 "未同步"重要说明 你必须应用此货到付款修复程序,而不是以下累积更新:

  • SQL Server 2014 累积更新5

  • SQL Server 2012 Service Pack 2 累积更新4

  • SQL Server 2012 Service Pack 2 累积更新3

注意 如果已应用这些累积更新,则必须使用以下解决办法来解决此问题。

解决方法

由于出现此问题的原因是,当数据库切换到主要角色时,用户会话与可用性数据库之间的争夺发生冲突,因此必须消除此争用以使数据库能够从该状态恢复。若要解决此问题,请按照下列步骤操作:

  1. 按给定顺序尝试以下方法。

    方法1:消除数据库访问当数据库遇到 "症状" 部分所述的症状时,请根据需要使用以下一个或两个步骤来消除锁定状态:

    • 查询 sys.dm_exec_requests 以查找在可用性数据库中出现锁阻止的会话。 使用 KILL 语句结束这些会话。

    • 禁用或停止正在访问可用性数据库的应用程序。

    如果方法1不能解决问题,请转到方法2。

    方法2:重新启动 SQL Server 主机服务器当应用程序访问和用户访问仍处于禁用状态时,请重新启动托管受影响的可用性数据库的 SQL Server 实例。 为此,请按照下列步骤操作:

    1. 禁用可用性组的自动故障转移。

    2. 重启托管主副本的 SQL Server 的受影响实例。

    3. 启用可用性组的自动故障转移。

  2. 当受影响的数据库完全恢复后,重新建立应用程序和用户连接。

状态

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

参考

有关受此问题影响的累积更新的详细信息,请参阅以下 Microsoft 知识库文章:

需要更多帮助?

需要更多选项?

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

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

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×