Ao testar uma atualização do SQL Server 2014 SP1 (12.0.4422.0) para o SQL Server 2016 CTP 3.2 (13.0.900.73), eu estava seguindo o processo de atualização recomendado e me deparei com um problema em que o banco de dados não era iniciado no primário antigo após o failover para o secundário atualizado. Nossa configuração é uma réplica primária e uma única réplica secundária, e as etapas que concluí foram:
- Remover failover automático na réplica secundária de confirmação síncrona
- Atualizar instâncias do servidor secundário para uma nova versão
- Failover manual na réplica secundária
- Verifique se os bancos de dados estão online na nova réplica primária
- Atualizar réplica primária anterior para nova versão
A atualização do secundário e do failover para torná-lo o primário funcionou exatamente como o esperado. Mas, depois de atualizar a réplica anteriormente primária, notei que os bancos de dados nela estavam listados no SSMS como Não sincronizando / em recuperação . Também tentar acessá-los geraria uma mensagem de erro:
O banco de dados ... não está acessível. (ObjectExplorer)
Verificando os logs do SQL Server que vi
Não é possível abrir o banco de dados '...' versão 782. Atualize o banco de dados para a versão mais recente.
A consulta à tabela master..sysdatabases mostrou que era realmente uma versão mais antiga e não havia sido atualizada durante a atualização:
Infelizmente, os logs não indicam por que não foram atualizados, e o Painel de Grupos de Disponibilidade emitiu apenas um aviso genérico, indicando que o estado de sincronização de Dados de algum banco de dados de disponibilidade não é íntegro, sem motivo.
Tentei usar o TSQL para desanexar os bancos de dados ou configurá-los offline para "dar um chute" na atualização, mas como eles fazem parte do SQL AG, esses comandos não funcionam.
Como posso atualizar o banco de dados para a versão mais recente quando ele faz parte de um SQL AG?