Um log de transação cresce inesperadamente ou fica cheio de SQL Server

Traduções deste artigo Traduções deste artigo
ID do artigo: 317375 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Se a opção de crescimento automático está definida no Microsoft SQL Server 2005, SQL Server 2000 e SQL Server 7.0, arquivos de log de transação podem expandir automaticamente.

Normalmente, o tamanho do arquivo de log de transação estabilize quando pode conter o número máximo de transações que podem ocorrer entre truncamentos de log de transação são acionados por pontos de verificação ou backups de log de transação.

No entanto, em alguns casos que o log de transações pode se tornar muito grande e execução espaço ou cheio. Normalmente, você receber a seguinte mensagem de erro quando um arquivo de log de transação usa o espaço em disco disponível e não pode expandir mais:
Erro: 9002 Gravidade: 17, estado: 2
O arquivo de log do banco de dados ' %. * ls' está cheio.
Se você estiver usando o SQL Server 2005, você receber uma mensagem de erro semelhante à seguinte:
Erro: 9002, gravidade: 17, Estado: 2
Log de transações do banco de dados ' %. * ls' está cheio. Para descobrir por que espaço no log não pode ser reutilizado, consulte a coluna log_reuse_wait_desc em sys. Databases
Mensagem de erro, além de SQL Server pode marcar bancos de dados como suspeito por falta de espaço para expansão de log de transação. Para obter mais informações sobre como se recuperar dessa situação, consulte o tópico "Espaço insuficiente em disco" nos Manuais Online do SQL Server.

Além disso, a expansão do log de transação pode resultar nas seguintes situações:
  • Um arquivo de log de transações muito grandes.
  • As transações podem falhar e podem iniciar a reversão.
  • Transações podem levar muito tempo para concluir.
  • Podem ocorrer problemas de desempenho.
  • O bloqueio pode ocorrer.

Mais Informações

Expansão de log de transação pode ocorrer um dos seguintes motivos ou cenários.


Observação No SQL Server 2005, você pode analisar o log_reuse_wait e log_reuse_wait_desccolunas da exibição de catálogo sys. Databases para determinar por que o espaço de log de transação não é reutilizado e por que o log de transação não pode ser truncado.


Transações não confirmadas

Transações muito grandes

Operações: Índice de DBCC DBREINDEX e criar

Quando a restauração de backups de log de transação

Aplicativos cliente não processam todos os resultados

Consultas de tempo limite antes de um log de transação termina a expansão e receber mensagens de erro falsos 'Log completo'

Transações

Informações avançadas

O log de transações para qualquer banco de dados é gerenciado como um conjunto de arquivos de log virtuais (VLFs). SQL Server determina o tamanho do arquivo VLF internamente com base no tamanho total do arquivo de log e o incremento de crescimento é usado quando o log expande. Um log sempre expande em unidades de VLFs inteiros e ele pode compactar somente a um limite VLF. Um VLF pode existir em um dos três estados: ativo, RECUPERÁVEL e REUTILIZÁVEL.
  • ACTIVE: A parte ativa do log começa o número de seqüência de log mínimo (LSN) que representa uma transação ativa (não confirmada). A parte ativa o log termina em LSN escritos por último. Qualquer VLFs que contêm qualquer parte do log ativo são considerados ativo VLFs. (espaço não utilizado no log físico não é parte de qualquer VLF.)
  • RECUPERÁVEL: A parte do log que vem antes da transação ativa mais antiga só é necessária manter uma seqüência de backups de log de recuperação.
  • REUTILIZÁVEL: se você não está mantendo backups de log de transação, ou se você SQL Server já foi feito o log, reutiliza VLFs antes ativo mais antigo transação.
Quando SQL Server chega ao fim do arquivo de log físico, ele começa a reutilizar esse espaço no arquivo físico emitindo uma operação CIRCULANDO volta para o início dos arquivos. Na verdade, SQL Server recicla o espaço no arquivo de log não é mais necessário para fins de backup ou recuperação. Se uma seqüência de backup de log está sendo mantida, parte do log antes do mínimo LSN não pode ser substituído até que você faça backup ou truncar os registros de log. Após realizar o backup de log, poderá circular SQL Server voltar ao início do arquivo. Após SQL Server círculos para começar a escrever registros anteriormente no arquivo de log, parte reutilizável do log é então entre o final do log lógico e a parte ativa do log.

Para obter mais informações, consulte o tópico "Transação Log físico arquitetura" nos Manuais Online do SQL Server. Além disso, você pode ver um diagrama e uma discussão sobre isso na página 190 do "Inside SQL Server 7.0" (Soukup, Ron. Interior Microsoft SQL Server 7.0, Microsoft Press, 1999) e também nas páginas 182 a 186 de "Inside SQL Server 2000" (Delaney, Kalen. Dentro do Microsoft SQL Server 2000, Microsoft Press, 2000).Bancos de dados SQL Server 2000 e SQL Server 7.0 tem a opção de crescimento automático e autoshrink. Você pode usar essas opções para ajudá-lo a comprimir ou expandir o log de transação.

Para obter mais informações sobre como essas opções podem afetar o servidor, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
315512Considerações sobre a configuração de crescimento automático e Autoshrink em SQL Server
Truncamento do arquivo de log de transação difere de compactação do arquivo de log de transação. Quando SQL Server trunca o arquivo de log de transações, isso significa que o conteúdo do arquivo (por exemplo, as transações confirmadas) é excluído. No entanto, quando você está exibindo o tamanho do arquivo de uma perspectiva de espaço em disco (por exemplo, no Windows Explorer ou usando o comando dir ), o tamanho permanecerá inalterado. No entanto, o espaço dentro do arquivo. ldf agora pode ser reutilizado por novas transações. Somente quando SQL Server reduz o tamanho do arquivo de log de transação você realmente vê uma alteração no tamanho físico do arquivo de log.

Para obter mais informações sobre como reduzir logs de transação, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
256650Como reduzir o log de transações SQL Server 7.0
272318 Reduzindo o log de transações SQL Server 2000 com DBCC SHRINKFILE
Para obter mais informações sobre o log de transações SQL Server 6.5 uso, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
110139Causas de log de transação SQL preenchendo

Como localizar consultas que consomem uma grande quantidade de espaço de log no SQL Server 2005

No SQL Server 2005, você pode usar o modo de exibição de gerenciamento dinâmico sys.dm_tran_database_transactions (DMV) para localizar consultas que consomem grandes quantidades de espaço de log. As seguintes colunas de sys.dm_tran_database_transactions DMV pode ser útil:
  • database_transaction_log_bytes_used
  • database_transaction_log_bytes_used_system
  • database_transaction_log_bytes_reserved
  • database_transaction_log_bytes_reserved_system
  • database_transaction_log_record_count
Você pode consultar a coluna sql_handle do exec_requests DMV para obter o texto de instrução real que consome grandes quantidades de espaço de log. Para fazer isso associando o DMV sys.dm_tran_database_transactions e o sys.dm_tran_session_transactions DMV na coluna transaction_id e adicionando uma associação com exec_requests adicional na coluna session_id.

Para obter mais informações sobre o sys.dm_tran_database_transactions DMV, vá para o sys.dm_tran_database_transactions (Transact-SQL) Site da Microsoft Developer Network (MSDN).

Para obter mais informações sobre o sys.dm_tran_session_transactions DMV, vá para o sys.dm_tran_session_transactions (Transact-SQL) Site do MSDN.

Para obter mais informações sobre o exec_requests DMV, vá para o exec_requests (Transact-SQL) Site do MSDN.

Propriedades

ID do artigo: 317375 - Última revisão: terça-feira, 16 de julho de 2013 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Palavras-chave: 
kbsqlsetup kbinfo kbmt KB317375 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 317375

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com