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.


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


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.