Reduzindo um log de transação grande em uma unidade completa

2

Alguém disparou uma declaração de atualização como parte de alguma manutenção que fez uma atualização de junção cruzada em duas tabelas com 200.000 registros em cada. Isso é 40 trilhões de declarações, o que explicaria parte de como o log cresceu para 200GB. Eu também não tinha o arquivo de log limitado, que é outro problema que eu vou cuidar do servidor - onde temos quase 200 bancos de dados residindo.

A 'solução' que usei foi fazer backup do banco de dados, fazer backup do log com truncate_only e, em seguida, fazer o backup do banco de dados novamente. Em seguida, reduzi o arquivo de log e defini um limite no log.

Vendo que havia outros bancos de dados usando a unidade de log, eu estava com pressa de limpá-lo. Eu poderia ter sido capaz de fazer o backup do arquivo de log para nossa unidade de backup, esperando que nenhum outro banco de dados precisaria aumentar seu arquivo de log.

Paul Randal, do link

Under no circumstances should you delete the transaction log, try to rebuild it using undocumented commands, or simply truncate it using the NO_LOG or TRUNCATE_ONLY options of BACKUP LOG (which have been removed in SQL Server 2008). These options will either cause transactional inconsistency (and more than likely corruption) or remove the possibility of being able to properly recover the database.

Houve outras opções das quais não conheço?

    
por Sam 12.03.2010 / 01:06

1 resposta

2

Você poderia colocar o banco de dados no modelo de recuperação Simples (em seguida, usar o comando CHECKPOINT para certificar-se de que o log seja o mais truncado possível) e, em seguida, retornar ao modelo de recuperação Completa. Em seguida, faça um backup completo do banco de dados para que o sistema perceba que está cheio.

Depois, você pode reduzir o log de acordo com sua conveniência. Encolher um log não é tão ruim quanto diminuir o banco de dados, o que você quase nunca deveria fazer.

Você não excluiu o log, apenas o truncou - o que mata a sua opção de restaurar para um ponto no tempo. Então faça um backup completo do seu banco de dados o mais rápido possível.

Lembre-se também de que, se o seu registro não puder crescer, seu banco de dados será interrompido. Então deixar o crescimento automático não é uma opção ruim, mas talvez configurá-lo para enviar um alerta quando ele estiver cheio.

    
por 12.03.2010 / 01:19

Tags