Sintomas
Suponha que você use o recurso Grupos de Disponibilidade AlwaysOn no Microsoft SQL Server 2012. Quando você altera o acesso de conexão da réplica secundária de "legível" para "ilegível", ocorre uma corrupção nas páginas que usam compactação de página na réplica determinada.
Os bancos de dados de disponibilidade que enfrentam esse problema na réplica secundária não podem se recuperar devido a um erro durante a fase de refazer da sincronização. O réplica secundário não será sincronizado com o réplica primário e relata um estado de sincronização de "SUSPEND_FROM_REDO". Além disso, você recebe as seguintes mensagens de erro no log de erros do SQL Server que hospeda a réplica secundária:
Observação
<
Data><Horário> Errode ID> do spid<: 17066, Gravidade: 16, Estado: 1.
<
Data><Horário>ID> do spid< SQL Server Asserção: Arquivo: <page.cpp>, line=3898 Falha Asserção = '!pageFull'. Esse erro pode estar relacionado ao tempo. Se o erro persistir após a execução da instrução, use DBCC CHECKDB para marcar a integridade estrutural do banco de dados ou reinicie o servidor para garantir que as estruturas de dados na memória não sejam corrompidas.
<
Data><Horário> Errode ID> spid<: 3624, Gravidade: 20, Estado: 1.
<
Data><Horário>ID> do spid< Uma verificação de marca de asserção do sistema falhou. Verifique o log de erros do SQL Server para obter detalhes. Normalmente, uma falha de declaração é causada por um bug de software ou corrupção de dados. Para marcar se há banco de dados corrompido, considere executar DBCC CHECKDB. Se você concordou em enviar despejos para a Microsoft durante a instalação, um minidespejo será enviado para a Microsoft. Uma atualização da Microsoft pode estar disponível no Service Pack mais recente ou em um QFE do Suporte Técnico.
<
Data><Horário>ID> do spid< Grupos de Disponibilidade AlwaysOn A movimentação de dados para o banco de dados '<Nome >do Banco de Dados' foi suspensa pelo seguinte motivo: "sistema" (ID de Origem 2; Cadeia de caracteres de origem: 'SUSPEND_FROM_REDO'). Para retomar a movimentação de dados no banco de dados, você precisará retomar o banco de dados manualmente. Para obter informações sobre como retomar um banco de dados de disponibilidade, consulte os Manuais Online do SQL Server.
<
Data><Horário> Errode ID> spid<: 3313, Gravidade: 21, Estado: 2.
<
Data><Horário>ID> do spid< Durante a regravação de uma operação registrada no banco de dados '<Nome >do Banco de Dados', ocorreu um erro na ID do registro de log (1786:4978584:74). Normalmente, a falha específica é registrada anteriormente como um erro no serviço de Log de Eventos do Windows. Restaure o banco de dados de um backup completo ou repare o banco de dados.
<
Data><Horário> spid<ID> ALTER DB param option: RESUME
<
Data><Horário>ID> do spid< Grupos de Disponibilidade AlwaysOn A movimentação de dados para o banco de dados '<Nome >do Banco de Dados' foi retomada. Esta é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária.
<
Data><Horário>ID> do spid< Transações não qualificadas estão sendo revertidas no banco de dados < Nome >do Banco de Dados para uma alteração de estado de Grupos de Disponibilidade AlwaysOn. Conclusão estimada da reversão: 100%. Esta é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária.
<
Data><Horário>ID> do spid< Grupos de Disponibilidade AlwaysOn conexão com o banco de dados primário encerrada para o banco de dados secundário '<Nome >do Banco de Dados' na réplica de disponibilidade com a ID da Réplica: {bbdedecb-f26b-47e9-9e7d-7c22f99edb23}. Esta é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária.
<
Data><Horário>ID> do spid< Iniciando o banco de dados '<DataBase Name>'.
<
Data><Horário>ID> do spid< A recuperação do banco de dados '<Nome >do Banco de Dados' (13) está 0% concluída (aproximadamente 781 segundos restantes). Fase 1 de 3. Esta é apenas uma mensagem informativa. Nenhuma ação do usuário é necessária.
……
Resolução
O problema foi corrigido pela primeira vez na atualização cumulativa seguinte do SQL Server.
Atualização cumulativa 38 para o SQL Server 2012 SP2 (Build 50785)
Atualização cumulativa 16 para o SQL Server 2012 SP1
Sobre atualizações cumulativas para o SQL Server
Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes para o SQL Server:
- Atualização cumulativa mais recente do SQL Server 2012 SP2
- Atualização cumulativa mais recente do SQL Server 2012 SP1
Mais informações
O problema anterior pode ocorrer quando o acesso de leitura é alterado para a réplica secundária.
Você pode definir o acesso de leitura dos bancos de dados de disponibilidade na réplica secundária usando os dois métodos a seguir:
Defina o acesso de leitura usando o comando ALTER AVAILABILITY GROUP:
ALTER AVAILABILITY GROUP [AGName] MODIFY REPLICA ON N'<SRV>' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = NO))Defina o acesso de leitura alterando as configurações no Pesquisador de Objetos do SQL Server Management Studio (SSMS):
- Conecte-se ao servidor e abra a pasta Disponibilidade do AlwaysOn.
- Abra a pasta Grupos de Disponibilidade.
- Clique com o botão direito do mouse no grupo de disponibilidade e selecione Propriedades.
- Altere a propriedade Readable Secondary da réplica secundária para Não e, em seguida, clique em Ok.
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".