O arquivo de log do banco de dados de distribuição do SQL Server cresce incontrolavelmente após o backup completo do banco de dados

8

Temos um ambiente de replicação de mesclagem que está empurrando para 8 assinantes. Isso está funcionando bem. Nosso banco de dados de distribuição é configurado no modo de recuperação simples. Temos um plano de manutenção que fará backup de todo o banco de dados todos os dias às 00:30. Quando esse processo é concluído, o arquivo de log de distribuição cresce nos próximos 30 minutos e absorve todo o espaço restante no disco rígido (cerca de 90 GB)

O que acontece então é que o banco de dados de distribuição aparece como "Recuperação pendente" e não podemos fazer nada até reiniciar a máquina. Depois disso, posso reduzir o arquivo de log para 2 MB.

Eu não tenho idéia do por que isso está acontecendo. O arquivo de log está sendo executado em cerca de 10 MB durante o dia. O tamanho do banco de dados está em 15 GB.

Koenyn
fonte
2
O que mais o plano de manutenção está fazendo? E qual é o sys.databases.log_reuse_wait_descvalor durante esses 30 minutos enquanto o log cresce?
Remus Rusanu
O que está colocando o banco de dados em um estado pendente de recuperação? Isso não deveria estar acontecendo com um backup completo.
mrdenny
11
ok, parece que quando esse trabalho é executado "Limpeza do histórico do agente: distribuição", o arquivo de log aumenta ... O backup possivelmente está acontecendo enquanto esse trabalho ainda está em execução. Não tenho certeza se isso causará o problema. Eu configurei a limpeza do histórico para ser executada uma hora antes. Vai ver quais são os resultados
Koenyn
Alguma reconstrução de índice?
Carol Baker Oeste

Respostas:

2

Parece que você tem um alto volume de transações acontecendo com sua replicação. Nesse caso, esse trabalho de "limpeza: distribuição" provavelmente deve estar em execução com muito mais frequência. Parece-me que está acontecendo uma vez por dia. No meu servidor de replicação de transações altas, eu o executo a cada 15 minutos para manter apenas as últimas 36 horas. Dessa forma, ele se comporta e não se atola.

Aqui está um artigo que pode ajudar - http://www.sqlservergeeks.com/blogs/singhsatnam84/sql-server-bi/563/sql-server-controlling-growth-of-a-distribution-database

Cate Donoghue
fonte
11
sim, executamos uma vez por dia. Agora limitei o tamanho do arquivo de log para 15 GB. Isso parece ter ajudado muito. Não há necessidade de truncá-lo agora e nosso servidor não falha. Quais são os riscos na execução do trabalho a cada 15 minutos?
Koenyn
A limpeza é uma simples chamada de procedimento armazenado. Ao executá-lo com mais frequência, o tamanho do lote é menor. Se sua retenção estiver definida corretamente, não há risco que eu encontrei. Mantém a replicação atrasada, na minha experiência. dbo.sp_MSdistribution_cleanup
Cate Donoghue
0

Crie um novo instantâneo da replicação e inicie o agente do instantâneo novamente.

user199836
fonte
2
Bem-vindo aos administradores de banco de dados . Por favor, verifique Como escrevo uma boa resposta? para contribuir melhor com o seu conhecimento.
Ronaldo