Ao atualizar o armazenamento em uma instância do SQL Server 2014 SP1 (12.0.4422.0), encontramos um problema em que dois dos bancos de dados não iniciavam no secundário após reiniciar o SQL Server. O servidor ficou offline por algumas horas enquanto instalávamos novos SSDs (maiores) e copiávamos os arquivos de dados para o novo volume. Quando reiniciamos o SQL Server, todos os bancos de dados, exceto dois, começaram a sincronizar novamente. Os outros dois foram exibidos no SSMS como Not Synchronizing/Recovery Pending .
Tendo tido um problema semelhante Não Sincronizando / Em Recuperação antes, verifiquei o status na seção Grupos de Disponibilidade -> Bancos de Dados de Disponibilidade, mas eles exibiram um X vermelho:
e mesmo tentar Suspender a Movimentação de Dados gerou uma mensagem de erro:
Falha ao suspender a movimentação de dados no banco de dados 'StackExchange.Bycycles.Meta', que reside na réplica de disponibilidade 'ny-sql03' no grupo de disponibilidade 'SENetwork_AG'. (Microsoft.SqlServer.Smo)
Informações Adicionais: Ocorreu uma exceção ao executar uma instrução ou lote transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
O banco de dados 'StackExchange.Bycycles.Meta' não pode ser aberto devido a arquivos inacessíveis ou memória insuficiente ou espaço em disco. Consulte o log de erros do SQL Server para obter detalhes. (Microsoft SQL Server, Erro: 945)
Eu verifiquei e os arquivos existiam e não tinham problemas de permissão. Também verifiquei os logs do SQL Server no SSMS em Gerenciamento, mas não vi nada sobre recuperação pendente ou problemas com os dois bancos de dados.
Procurando ajuda, encontrei dois artigos diferentes que diziam que os bancos de dados precisariam ser restaurados.
Existe alguma maneira de retomar a replicação de dados em um secundário quando um banco de dados está travado em Recuperação pendente?
Como o servidor estava offline por um tempo, pensamos que poderia ter saído da janela de recuperação do primário. Decidimos tentar aplicar os logs de transação mais recentes no banco de dados para ver se isso iniciaria o processo de recuperação:
Depois de executar o acima no servidor secundário para ambos os bancos de dados, eles puderam iniciar a sincronização novamente.
ATUALIZAÇÃO: Tivemos um problema semelhante em que, após um failover manual de AG, um dos bancos de dados na nova réplica primária ficou travado no modo Não sincronizando (alternado para Não sincronizando / Recuperação pendente após reiniciar o SQL Server) e as etapas acima funcionaram para resolver isso questão também.
Você pode remover o banco de dados do AAG, no nó primário fazer um backup completo e um backup de transação, restaurar esses dois backups no banco de dados do nó secundário e adicionar novamente o banco de dados ao AAG. Neste momento, pode indicar que o nó secundário DB não está sincronizando, mas apenas fazendo o que é sugerido na segunda resposta (Compre do jeito que foi penalizado -2), quero dizer, movendo o nó secundário para o primário, ele corrigirá.
Reinicie a instância do SQL Server que hospeda a réplica secundária. Isso iniciará a recuperação em todos os bancos de dados, incluindo bancos de dados do grupo de disponibilidade e, desde que o SQL Server possa acessar todos os arquivos do banco de dados, o banco de dados do grupo de disponibilidade afetado deverá se recuperar com êxito e retomar a sincronização com a réplica primária.
Da próxima vez, tente fazer o failover do primário para o secundário 'não sincronizado' e vice-versa. O secundário agora deve ser sincronizado.