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

症状

假设你在 Microsoft SQL Server 2012 或 Microsoft SQL Server 2014 中使用合并复制。 作为同步过程的一部分,合并代理会在会话中生成新的生成。 如果由于某种原因(如死锁或超时),将选择生成事务作为死锁牺牲品,并且事务将回滚,在即将推出的 makings 中可能存在大量阻塞来 MSinternal_makegeneration_inprog 应用程序锁,并且前面提到的会话将显示为 head 阻止程序。

原因

用于帮助对生成进行安全处理的应用程序锁是会话级应用程序锁。 如果在生成过程中检测到死锁,则仅回退事务,但不注销会话。 若要释放会话级应用程序锁定,必须注销会话。 因此,由于重试逻辑的设计(在合并复制期间生成失败的过程中不会注销会话),如果第一代在发生死锁时失败,将不会在事务回滚期间释放会话锁(MSinternal_makegeneration_inprog) 。 这会导致在即将生成的生成过程中导致锁定请求的阻塞链。 Head 阻止显示为第一代发出的请求失败,出现死锁。 在修复程序之前,SQL Server 仅为成功生成过程清除锁定。 如果发生死锁,它会在会话注销之前留下孤立的会话应用程序锁。

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

状态

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

需要更多帮助?

需要更多选项?

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

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