症状
假设你已将 SQL Service Broker (SSB)应用程序部署为 Microsoft SQL Server 中 Alwayson 可用性组(AGs)的一部分,然后使用 AG 侦听器进行连接。 在 AG 故障转移后,原始主副本上的 SSB 传出连接将保持打开状态。 这将导致 SSB 传入消息被删除,因为数据库是只读的或不可访问。
因此,它会将 SSB 消息堵塞在传输队列中,并且在 AG 中存在多个 Service Broker 连接。
解决方案
SQL Server 的累积更新信息:
在 SQL Server 的以下累积更新中修复了此问题:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
注意 通过此修补程序,SQL Server 将在故障转移期间关闭与旧的主可用性组副本的传入和传出 SSB 连接,以便在此修复之前删除的消息将保留在队列中,并且当连接与新的主副本建立连接时,它们将立即被重定向到新的主副本,而不会丢弃或缺少任何消息。
SQL Server 的 Service Pack 信息:
此问题已在 SQL Server 的以下 service pack 中修复:
SQL Server 2012 的 Service Pack 4
SQL Server 2016 的 Service Pack 2
有关如何获取最新服务包的详细信息,请参阅 如何获取最新的 SQL Server 2012 服务包
关于 SQL Server 的 Service pack
Service Pack 具有累积性。 每个新 Service Pack 除了包含所有新修复程序外,还包含以前 Service Pack 中的所有修复程序。 我们建议为该服务包应用最新的服务包和最新的累积更新。 在安装最新的 Service Pack 之前,不需要安装以前的 Service Pack。 使用以下文章中的表1查找有关最新服务包和最新累积更新的详细信息。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。