Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Sintomas

Suponha que você use o grupo de disponibilidade AlwaysOn em um banco de dados do Microsoft SQL Server 2012 ou do SQL Server 2014, e uma grande transação ativa aberta existe e requer espaço de log adicional. Quando o arquivo de log não pode crescer por um dos seguintes motivos, a transação falha.

  • Falta de espaço adicional no arquivo

  • O arquivo de log está configurado para não aumentar

  • O arquivo de log atingiu seu tamanho máximo configurado

Além disso, a seguinte mensagem de erro é exibida:

Erro: 9002, severidade: 17, estado: 9. o log de transação do banco de dados ' nome do banco de dados ' <banco de dados '> ' está cheio devido a ' LOG_BACKUP '.

Depois de executar um backup de log, você recebe outra mensagem de erro do 9002:

Erro: 9002, severidade: 17, estado: 9. o log de transação do banco de dados ' nome do banco de dados ' <banco de dados '> ' está cheio devido a ' ACTIVE_TRANSACTION '.

Depois de outro backup de log, você recebe outra mensagem de erro do 9002 seguida de uma mensagem de erro do 5901:

Erro: 9002, severidade: 17, estado: 9. o log de transação do banco de dados ' nome do banco de dados ' <banco de dados '> ' está cheio devido a ' AVAILABILITY_REPLICA '.

Não foi possível gravar um registro de ponto de verificação no banco de dados <o nome do banco de dados> porque o log está sem espaço. Entre em contato com o administrador do banco de dados para truncar o log ou atribuir mais espaço aos arquivos de log do banco de dados. Erro: 5901, severidade: 16, estado: 1. uma ou mais unidades de recuperação pertencentes ao banco de dados ' <nome do banco de dados> ' falhou ao gerar um ponto de verificação. Isso geralmente é causado por falta de recursos do sistema, como disco ou memória, ou em alguns casos devido à corrupção do banco de dados. Examine as entradas anteriores no log de erros para obter informações mais detalhadas sobre essa falha.

Quando o ponto de verificação ou backups de log subsequentes são feitos durante a reversão da transação, você pode receber a seguinte mensagem de erro:

MSG 3052, nível 16, estado 1, linha 4BACKUP LOG não pôde registrar atualizações para o banco de dados ' <nome do banco de dados> '. Os backups de log subsequentes serão necessários para avançar o ponto de backup de ' <LSN ID 1> ' para ' <lsn ID 2> ' após o espaço do log ser disponibilizado para o registro em log.

Quando você receber essas mensagens, não será mais possível enviar nenhuma nova transação para o banco de dados e não poderá aumentar o arquivo de log ou adicionar outro arquivo de log.

Resolução

O problema foi corrigido primeiro na seguinte atualização cumulativa do 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. Recomendamos que você baixe e instale as atualizações cumulativas mais recentes do SQL Server:

Solução alternativa

Você pode usar a seguinte solução alternativa para truncar os logs e atividades de retomada.

  1. Verifique cada réplica secundária para verificar se a réplica secundária last_hardened_lsn (consulte Sys.dm_hadr_database_replica_states) corresponde à réplica primária last_hardened_lsn. Você pode fazer isso executando a seguinte consulta que está conectada à instância de réplica primária

    SELECT ags.name as AGGroupName,    ar.replica_server_name as InstanceName,    hars.role_desc,    db_name(drs.database_id)as DBName,    drs.last_hardened_lsn, drs.log_send_queue_size,    drs.synchronization_state_desc as SyncState,    ar.availability_mode_desc as SyncMode,    CASE drs.is_local WHEN 1 THEN drs.database_id ELSE NULL END as database_id    FROM sys.dm_hadr_database_replica_states drs    LEFT JOIN sys.availability_replicas ar ON drs.replica_id = ar.replica_id    LEFT JOIN sys.availability_groups ags  ON ar.group_id = ags.group_id    LEFT JOIN sys.dm_hadr_availability_replica_states hars        ON ar.group_id = hars.group_id and ar.replica_id = hars.replica_id      WHERE db_name(drs.database_id) = '<database name>'
  2. Na réplica primária

    • Remova o banco de dados do grupo de disponibilidade.

    • Adicione novamente o banco de dados ao grupo de disponibilidade.

  3. Em cada réplica secundária

    • Adicione novamente o banco de dados ao grupo de disponibilidade.

Ao remover o banco de dados do grupo de disponibilidade, ele truncará imediatamente seus logs e liberará espaço de log. Se a last_hardened_lsn em cada réplica secundária for idêntica à réplica primária e não houver backups de log durante a hora de remover o banco de dados do grupo de disponibilidade e adicionar novamente o banco de dados em cada secundário, a réplica secundária será readicionada com êxito sem erros ou com a necessidade de restaurar os backups de log no secundário. Se uma réplica secundária não for atual com a réplica primária e você tiver que remover o banco de dados do grupo de disponibilidade antes que o secundário possa ficar em dia, essa réplica secundária pode ter que fazer backups de log restaurados para que ele seja recriado com um backup completo e de banco de dados de log de transações.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×