应用对象
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2017 on Windows

症状

请考虑以下情况:

  • 使用 Microsoft SQL Server 2016 Service Pack 2 (SP2) 累积更新 2 (CU2) 或更高版本。

  • 运行的实例托管多个数据库 (通常超过 200) ,该实例是Always On可用性组的一部分 (AG) (通常具有辅助服务器) 角色。 备注 所有用户数据库都不需要属于 AG。

  • 运行卷影复制服务 (VSS) 应用程序,请求备份SQL Server实例的所有或部分数据库。

在此方案中,SQL 编写器服务可以达到死锁状态,并无限期地对主 (sys.sysdbreg 中的内部系统表保留锁,object_id 28) 。 此外,这些锁又会阻止读取系统动态管理视图 (DMV) (如 sys.dm_hadr_database_replica_states),并可能导致实例中的主要辅助阻塞。 此外,你注意到块链分析返回来自SQL Server VSS 编写器的以下语句作为头块:

“从 master.sys.databases 选择 name、recovery_model_desc、state_desc、CONVERT (整数、is_in_standby) 、ISNULL (source_database_id,0) ”

然后,SQL Server的等待状态为ASYNC_NETWORK_IO

备注 由于 实现了ASYNC_NETWORK_IO 等待,因此针对它的 wait_time 永远不会超过两秒 (2,000 毫秒) 。 但是,等待类型将无限期保留,这种情况永远不会自行解除阻止。 它要求你终止SQL 编写器服务以取消阻止这种情况。

在此头阻止器阻止的 SPID 中,通常会有 DBSTARTUP SPID (alwayson Secondary DB 重做) 。

状态

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

解决方法

以下SQL Server累积更新中修复了此问题:

关于SQL Server的累积更新:

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

参考

了解 Microsoft 用于描述软件更新的术语

需要更多帮助?

需要更多选项?

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