segunda-feira, 11 de abril de 2011

The transaction log for database is full - Erro no Sql Server

Erro: Ao tentar utilizar uma aplicação com a base de dados em SQL Server 2005, o usuário encontrava o seguinte erro: The transaction log for database ‘MyBase’ is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases ”

Código do erro: 9002

Severity: 17
State: 2

No SQL Server 7.0, no SQL Server 2000 e no SQL Server 2005, marcando a configuração de crescimento automático, arquivos de log podem crescer automaticamente. Apesar do tamanho do LOG estabilizar depois de um período inicial de crescimento, em algumas situações o log pode se tornar muito grande atingindo o espaço em disco disponível. O log pode crescer inesperadamente devido a diversas questões, entre elas:

Normalmente, você receberá a seguinte mensagem de erro quando o transaction log atingir o espaço em disco disponível e não é possível expandir mais:

The log file for database '%.*ls' is full.

Se você estiver usando o SQL Server 2005 ou 2008,  a mensagem é a mesma que mostrada no início do post.

Solução: Como esta base era utilizada apenas para homologação, resolvi rapidamente truncando o log com o comando BACKUP LOG ‘MyBase’ WITH TRUNCATE_ONLY

Apesar desta solução resolver o problema, é necessário entender que truncar o log, quebra o LOG CHAIN, portanto uma vez que isto é feito, não é mais possível efetuar backup dos logs até que se faça um full ou diif backup da base. Case um backup do log seja tentado, a seguinte mensagem poderá ocorrer:

Msg 4214, Level 16, State 1, Line 1
BACKUP LOG cannot be performed because there is no current database backup.
Msg 3013, Level 16, State 1, Line 1
BACKUP LOG is terminating abnormally.

Abraço a todos ...

Nenhum comentário:

Postar um comentário