O banco de dados do SQL Server AlwaysOn parou no modo Não sincronizando / em recuperação após a atualização. Erro: Não é possível abrir o banco de dados '…' versão 782

10

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:

  1. Remover failover automático na réplica secundária de confirmação síncrona
  2. Atualizar instâncias do servidor secundário para uma nova versão
  3. Failover manual na réplica secundária
  4. Verifique se os bancos de dados estão online na nova réplica primária
  5. 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:

Versão do sysdatabases do SSMS

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?

Greg Bray
fonte

Respostas:

10

Depois de bisbilhotar no SSMS por um tempo, notei que na réplica secundária havia um ícone de pausa ao lado dos Bancos de dados de disponibilidade. O primário mostrou que ambos eram "verdes", mas havia uma opção no secundário para Retomar o movimento de dados . Reiniciei o primeiro banco de dados e imediatamente a mensagem de status In Recovery foi removida. Um minuto depois, mudou de Não sincronizando para Sincronizado, e tudo funcionou conforme o esperado.

Aqui está uma captura de tela dos bancos de dados AG depois de corrigir o "Patch", mas antes de corrigir o banco de dados de teste:

Retomar a movimentação de dados no SQL AG

Observe que você também pode usar o TSQL no secundário para retomar a replicação em vários bancos de dados ao mesmo tempo:

ALTER DATABASE [Patch] SET HADR RESUME;
ALTER DATABASE [test] SET HADR RESUME;
GO
Greg Bray
fonte
11
Você sabe o que causou uma pausa na replicação? e posso descobrir desde quando a replicação foi pausada?
JohnG