O log de transações do banco de dados 'database_name' está cheio devido a 'XTP_CHECKPOINT'

26

Eu tenho uma pergunta sobre XTP_CHECKPOINT.

Estou usando o SQL Server 2014. Eu tenho um banco de dados que está no modo de modelo de recuperação SIMPLES. Também está sendo replicado.

Não há transações abertas. Eu corri DBCC OPENTRANe ele retorna:

"Nenhuma transação aberta ativa."

Mas continuo recebendo essa mensagem sempre que tento criar ou excluir uma tabela ou excluir dados:
(substituí meu nome real do banco de dados pela palavra database_name)

"O log de transações do banco de dados 'database_name' está cheio devido a 'XTP_CHECKPOINT'"

Alguém sabe por que isso pode estar acontecendo e, mais importante, como posso fazer isso parar?

E sim, o banco de dados realmente está no modo de modelo de recuperação SIMPLES. ou seja, o log de transações deve truncar automaticamente.

Aliás, outro banco de dados que eu tenho no modo de recuperação total fez a mesma coisa, começou a retornar o mesmo erro:

O log de transações do banco de dados 'database_name' está cheio devido a 'XTP_CHECKPOINT'

Tentei alterar as configurações de crescimento do log para crescimento ilimitado, mas isso não permitiu, retornando o mesmo erro.

Posso reproduzir o problema sem nenhum material XTP, exceto apenas o grupo de arquivos. Veja como: http://pastebin.com/jWSiEU9U

user3469285
fonte

Respostas:

8

Eu tive um problema semelhante: não tive replicação, mas depois que usei a tabela Memory Optimized como teste, o banco de dados no modo de recuperação Simples, mas meus logs de transações não foram truncados. O truncamento manual, mesmo após um backup completo, deu o erro:

Não é possível reduzir o arquivo de log X porque o arquivo de log lógico localizado no final do arquivo está em uso.

Um ponto de verificação manual falhou:

Mensagem 41315, nível 16, estado 4, operação da linha de ponto de verificação N falhou no banco de dados X.

Um ponto de verificação manual só teve êxito logo após reiniciar o serviço SQL, o que levaria a um estado de recuperação de 4 horas devido ao tamanho do meu banco de dados Multi Tb. Também tentei definir o crescimento automático para um tamanho específico, mas tudo acabou fazendo o mesmo: preencha os logs de transações até não sobrar espaço.

Finalmente, depois de dias e noites tentando e pesquisando, encontrei a solução para o meu problema instalando a Atualização Cumulativa 3 para SQL Server 2014 SP1

Gregory Liénard
fonte
9

Primeiro, verifique se a replicação não está causando isso, conforme indicado no item de conexão, "log_wait_reuse_desc = XTP_CHECKPOINT não significa necessariamente que o trabalhador do ponto de verificação XTP esteja retendo o truncamento de log". então comece executando sp_repltranse verifique se todos os dados foram distribuídos.

Depois, há este pequeno trecho aqui:

"acontece em um banco de dados que possui um grupo de arquivos otimizado para memória, não importa se há tabelas otimizadas para memória ou não.

A solução atual é definida como AutoGrown como um tamanho fixo. Ou, alterando o modo de recuperação para Simples, e diminuindo o log ".

Portanto, se a limpeza da replicação não funcionar, tente o seguinte:

checkpoint;
dbcc shrinkfile (Logfile, truncateonly)
alter database [database] modify file (filename = 'TRANSACTIONLOG', FILEGROWTH = 5MB)

Não é especificado se isso é para o arquivo de log ou os arquivos de banco de dados, mas vamos começar tentando os arquivos de log e, se não, tente definir os arquivos de banco de dados para crescimento fixo:

Spörri
fonte
3

Consegui solucionar o problema adicionando outro arquivo de log, o que me permitiu executar um backup completo, ajustar o tamanho do arquivo de log principal e limitar o crescimento, além de remover o arquivo de log extra adicionado para resolver o problema XTP_CHECKPOINT.

user78285
fonte
1

Eu experimentei isso com um cliente. Os arquivos de dados FILESTREAM de log e na memória estavam na mesma unidade. Eles criaram um novo arquivo de log (poucos sugeriram isso), mas o sistema não pode CHECKPOINT, pois falha ao criar os arquivos do ponto de verificação na memória (* .HKCKP).

Tente liberar espaço na unidade com os dados FILESTREAM na memória.

Phil Grayson
fonte