症状
假设使用 Always On 高可用性组 (AG) 作为辅助副本。 尝试将 Microsoft SQL Server 2016 升级到 Service Pack 2 (SP2) 累积更新 11 (CU11) 或更高版本时,升级脚本会失败,并且可能会收到以下错误消息:
DateTime spidSpidId 正在升级数据库 [DatabaseName] 中的订阅设置和系统对象。
DateTime spidSpidId 无法更新数据库"DatabaseName",因为数据库是只读的。
DateTime spidSpidId 执行命令时sp_vupgrade_replication。
原因
在 SQL AG 的辅助副本上执行升级时,数据库恢复与升级脚本执行之间会存在竞争。 因此,在只读 数据库sp_vupgrade_replication无法正确筛选出只读数据库。 在短时间内,恢复阶段中的辅助数据库会包含在可编辑数据库列表中。 因此,尝试更新这些数据库时,将返回异常,因为数据库是只读的。
状态
Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。
解决方法
此问题已针对以下更新的累积更新SQL Server:
关于更新的累积SQL Server:
每个新的累积更新SQL Server包含所有修补程序以及上一个累积更新中包含的所有安全修补程序。 查看最新累积更新,了解SQL Server:
参考
了解 Microsoft 用于描述软件更新的术语。