升级后,SQL Server AlwaysOn 数据库卡在“未同步”/“恢复”模式。错误:无法打开数据库“...”版本 782

Gre*_*ray 11 sql-server upgrade availability-groups sql-server-2016

在测试从 SQL Server 2014 SP1 (12.0.4422.0) 到 SQL Server 2016 CTP 3.2 (13.0.900.73) 的升级时,我遵循推荐的更新过程并遇到了一个问题,即故障转移后数据库无法在旧的主数据库上启动到更新的辅助。我们的设置是一个主副本和一个辅助副本,我完成的步骤是:

  1. 删除同步提交辅助副本上的自动故障转移
  2. 将辅助服务器实例升级到新版本
  3. 手动故障转移到辅助副本
  4. 验证数据库在新的主副本上是否在线
  5. 将以前的主副本升级到新版本

升级辅助节点和故障转移使其成为主节点完全按预期工作。但是在升级以前的主副本后,我注意到其上的数据库在 SSMS 中列为Not Synchronizing / In Recovery。尝试访问它们也会生成错误消息:

数据库...无法访问。(对象浏览器)

通过我看到的 SQL Server 日志检查

无法打开数据库 '...' 版本 782。将数据库升级到最新版本。

查询master..sysdatabases表,确实是旧版本,升级过程中没有更新:

SSMS 系统数据库版本

不幸的是,日志没有指出它为什么没有更新,并且可用性组仪表板只给出了一个通用警告,表明某些可用性数据库数据同步状态不健康,没有任何原因。

我尝试使用 TSQL 分离数据库或将它们设置为离线以“踢”它进行更新,但由于它们是 SQL AG 的一部分,因此这些命令不起作用。

当数据库是 SQL AG 的一部分时,如何将数据库升级到最新版本?

Gre*_*ray 11

在 SSMS 中闲逛一段时间后,我注意到在辅助副本上,可用性数据库旁边有一个暂停图标。主要显示两者都是“绿色”,但在次要恢复数据移动上有一个选项。我恢复了第一个数据库,并立即删除了In Recovery状态消息。一分钟后,它从 Not Synchronizing 变为 Synchronized,一切都按预期进行。

这是我修复“补丁”后,但在修复测试数据库之前的 AG 数据库屏幕截图:

恢复 SQL AG 上的数据移动

请注意,您还可以在辅助数据库上使用 TSQL 来同时在多个数据库上恢复复制:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO
Run Code Online (Sandbox Code Playgroud)