ID do artigo: 317375 - Última revisão: quinta-feira, 27 de março de 2008 - Revisão: 6.3 Um log de transação aumenta inesperadamente ou se torna normal em um computador que está executando o SQL Server
Nesta páginaSumárioNo SQL Server 7.0, no SQL Server 2000 e no SQL Server 2005, com a configuração de crescimento automático, arquivos de log de transações podem expandir automaticamente. Normalmente, o tamanho do arquivo log de transação stabilizes quando ele pode conter o número máximo de transações que podem ocorrer entre truncamentos de log de transação que pontos de verificação ou backups do log de transações do disparador. No entanto, em algumas situações que o log de transações pode se tornar muito grande e execução fora do espaço ou cheio. Normalmente, você receber a seguinte mensagem de erro quando uma transação logon arquivo leva até o espaço em disco disponível e não é possível expandir mais: Erro: 9002, gravidade: 17, estado: 2 O arquivo de log para banco de dados ' %. * ls' está cheio. Erro: 9002, gravidade: 17, estado: 2 O log de transações para o banco de dados ' %. * ls' está cheio. Para descobrir por que não pode ser reutilizado espaço no log, consulte a coluna log_reuse_wait_desc em sys.databases Além disso, expansão de log de transação pode resultar nas seguintes situações:
Faz com queExpansão de log de transação pode ocorrer devido a razões ou cenários a seguir:
Transações não confirmadasTransações explícitas permanecem não confirmadas se você não emitir um comando COMMIT ou ROLLBACK explícito. Este mais freqüentemente ocorre quando um aplicativo emite um cancelar ou um comando Transact SQL KILL sem um comando ROLLBACK correspondente. O cancelamento da transação ocorre, mas ele não reverter; portanto, o SQL Server não é possível truncar todas as transações que ocorre após isso porque a transação anulada ainda está aberta. Você pode usar a referência de DBCC OPENTRAN Transact-SQL para verificar se há uma transação ativa em um banco de dados em um determinado momento. Para obter mais informações sobre esse cenário específico, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:295108
(http://support.microsoft.com/kb/295108/
)
Transação incompleta pode mantenha grande número de bloqueios e bloqueio de maiúsculas 171224
(http://support.microsoft.com/kb/171224/
)
Noções básicas sobre como funciona o comando Transact-SQL KILL Além disso, consulte o tópico "OPENTRAN DBCC" no SQL Server Books Online.cenários que podem resultar em transações não confirmadas :
Transações extremamente grandesRegistros de log nos arquivos de log de transação são truncados em uma base de transação por transação. Se o escopo de transação for grande, que transação e quaisquer transações iniciado depois que não são removidos do log de transações, a menos que sua conclusão. Isso pode resultar em arquivos de log grande. Se a transação é grande o suficiente, o arquivo de log pode usar o espaço em disco disponível e fazer com que tipo de mensagem de erro, como Erro 9002 "log de transações cheio". Para obter informações adicionais sobre o que fazer quando você recebe esse tipo de mensagem de erro são fornecidas na seção "Mais informações" deste artigo. Além disso, demora muito tempo e sobrecarga de SQL Server para reverter transações grandes.Operações: DBCC DBREINDEX e CREATE INDEXDevido às alterações no modelo de recuperação no SQL Server 2000, quando você usa o modo de recuperação total e executar o DBCC DBREINDEX, o log de transações pode expandir significativamente mais comparada do SQL Server 7.0 em um modo de recuperação equivalente com o uso de SELECT INTO ou BULK COPY e com "trunc. Logoff chkpt.".Embora o tamanho do log de transação após a operação DBREINDEX pode ser um problema, essa abordagem fornece melhor desempenho de restauração do log. Durante a restauração de backups de log de transaçãoIsso é descrito no seguinte artigo Microsoft Knowledge Base:232196
(http://support.microsoft.com/kb/232196/
)
Espaço de log usado parece crescer após a restauração do backup Se você definir o SQL Server 2000 para usar o modo registrado e emitir uma instrução BULK COPY ou SELECT INTO, cada extensão alterado é marcada e backup, em seguida, quando você faz backup do log de transações. Embora isso lhe permite fazer backup dos logs de transação e recuperar de falhas mesmo depois de executar operações em massa, isso aumenta o tamanho dos logs de transação. SQL Server 7.0 não inclui esse recurso. SQL Server 7.0 somente registra quais extensões são alteradas, mas não grava as extensões reais. Portanto, o log ocupará muito mais espaço no SQL Server 2000 que no SQL Server 7.0 no modo de log em massa, mas não o quanto como no modo completo. Aplicativos cliente não processam todos os resultadosSe você emite uma consulta para o SQL Server e você não manipular os resultados imediatamente, você pode ser bloqueios e reduzindo simultaneidade no servidor.Por exemplo, suponha que você emite uma consulta que requer linhas de duas páginas para preencher o resultado definir. SQL Server analisa, compila e executa a consulta. Isso significa que bloqueios compartilhados sejam colocados em duas páginas que contêm linhas que você deve ter para atender à sua consulta. Além disso, vamos supor que nem todas as linhas cabem em um pacote do SQL Server TDS (o método pelo qual o servidor se comunica com o cliente). Pacotes TDS são preenchidos e enviados para o cliente. Se todas as linhas da primeira página couber no pacote TDS, o SQL Server libera o bloqueio compartilhado nessa página, mas deixa um bloqueio compartilhado na segunda página. SQL Server, em seguida, aguarda o cliente solicitar mais dados (você pode fazer isso usando DBNEXTROW/DBRESULTS, SQLNextRow/SQLResults ou FetchLast/FetchFirst por exemplo). Isso significa que o bloqueio compartilhado é mantido até que o cliente solicita o restante dos dados. Outros processos que solicitam dados da segunda página podem estar bloqueados. Tempo limite de consulta antes de um log de transações conclui a expansão e você recebe mensagens de erro 'Log completo' falsosNessa situação, embora não haja espaço suficiente em disco, você ainda receber uma mensagem de erro "falta de espaço".Essa situação varia para SQL Server 7.0 e SQL Server 2000. Uma consulta pode fazer com que o log de transação expandir automaticamente se o log de transações está quase cheio. Isso pode levar mais tempo e uma consulta pode ser interrompida ou pode exceder seu período de tempo limite devido a isso. SQL Server 7.0 retorna Erro 9002 nessa situação. Esse problema não se aplica ao SQL Server 2000. No SQL Server 2000, se você tiver a opção de redução automática ativada para um banco de dados, não há um extremamente pequeno tempo durante o qual um log de transações tenta expandir automaticamente, mas ele não é possível porque a função de redução automática está sendo executado simultaneamente. Isso também pode causar falsos instâncias Erro 9002. Normalmente, a expansão automática de arquivos de log de transação ocorre rapidamente. No entanto, nas seguintes situações, pode levar mais tempo que o habitual:
Transações unreplicatedO tamanho do banco de dados Editor do log de transação pode expandir se você estiver usando duplicação. As transações que afetam os objetos que são replicados são marcadas como "Para replicação". Essas transações, como transações não confirmadas, não são excluídas depois de ponto de verificação ou depois de você fazer backup do log de transações até que a tarefa do leitor de log copia as transações para o banco de dados de distribuição e desmarca-los. Se um problema com a tarefa do leitor de log impede a leitura essas transações no banco de dados Editor , o tamanho do log transação poderá continuar Expandir como o número de transações não replicado aumenta. Você pode usar a referência de DBCC OPENTRAN Transact-SQL para identificar a transação mais antiga que não são replicados.Para obter mais informações sobre como solucionar problemas unreplicated transações, consulte os tópicos "sp_replcounters" e "sp_repldone" nos manuais online do SQL Server. Para obter mais informações, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft: 306769
(http://support.microsoft.com/kb/306769/
)
CORRECÇÃO: Log de transações de instantâneo de banco de dados publicado não pode ser truncado 240039
(http://support.microsoft.com/kb/240039/
)
CORRECÇÃO: OPENTRAN DBCC não relata informações de replicação 198514
(http://support.microsoft.com/kb/198514/
)
CORRECÇÃO: Restaurar para o novo servidor faz com que transações para permanecer no log Mais InformaçõesO log de transações para qualquer banco de dados é gerenciado como um conjunto de virtual arquivos de log (VLFs) cujo tamanho SQL Server internamente determina com base no tamanho total do arquivo de log e o incremento de crescimento no uso quando expande o log. Um log sempre expande em unidades de VLFs inteiros e ele pode compactar somente a um limite de VLF. Um VLF pode existir em um dos três estados: ACTIVE RECUPERÁVEL e REUTILIZÁVEL.
Para obter informações adicionais, consulte o tópico "Transaction log físico arquitetura" nos manuais online do SQL Server. Além disso, você pode ver um diagrama excelente e a discussão sobre isso na página 190 do "Inside SQL Server 7.0" (Soukup, Ron. Interno Microsoft SQL Server 7.0, Microsoft Press, 1999) e também em páginas 182 através de 186 do "Inside SQL Server 2000" (Delaney, Kalen. Interno Microsoft SQL Server 2000, Microsoft Press, 2000). Bancos de dados SQL Server 7.0 e SQL Server 2000 tem as opções para crescimento automático e autoshrink. Você pode usar essas opções para ajudá-lo para compactar ou expandir o log de transações. Para obter mais informações sobre como essas opções podem afetar seu servidor, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 315512
(http://support.microsoft.com/kb/315512/
)
Considerações sobre a configuração de crescimento automático e Autoshrink no SQL Server Há uma diferença entre o truncamento versus a compactação do arquivo de log de transações. Quando o SQL Server Trunca um arquivo de log de transações, isso significa que o conteúdo desse arquivo (por exemplo, as transações confirmadas) são excluídos. No entanto, quando você está exibindo o tamanho do arquivo da perspectiva de espaço em disco (por exemplo, no Windows Explorer ou usando o comando dir ) o tamanho permanece inalterado. No entanto, o espaço dentro do arquivo .ldf agora pode ser reutilizado por novas transações. Somente quando o SQL Server reduz o tamanho do arquivo log de transação, você realmente vê uma alteração do tamanho físico do arquivo de log.Para obter mais informações sobre como reduzir os logs de transação, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft: 256650
(http://support.microsoft.com/kb/256650/
)
Como reduzir o log de transação do SQL Server 7.0 272318
(http://support.microsoft.com/kb/272318/
)
Reduzindo o log de transações no SQL Server 2000 com DBCC SHRINKFILE Para obter mais informações sobre uso de log de transação do SQL Server 6.5, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 110139
(http://support.microsoft.com/kb/110139/
)
Causas de log de transações SQL preenchendo Como localizar consultas que consomem uma grande quantidade de espaço de log no SQL Server 2005No SQL Server 2005, você pode usar a exibição de gerenciamento dinâmico de sys.dm_tran_database_transactions (DMV) para localizar consultas que consomem grandes quantidades de espaço em log. As seguintes colunas na sys.dm_tran_database_transactions DMV pode ser útil:
Para obter mais informações sobre o sys.dm_tran_database_transactions DMV, visite o seguinte site da Web Microsoft Developer Network (MSDN): http://msdn2.microsoft.com/en-us/library/ms186957.aspx
(http://msdn2.microsoft.com/en-us/library/ms186957.aspx)
Para obter mais informações sobre o sys.dm_tran_session_transactions DMV, visite o seguinte site da MSDN: http://msdn2.microsoft.com/en-us/library/ms188739.aspx
(http://msdn2.microsoft.com/en-us/library/ms188739.aspx)
Para obter mais informações sobre a DMV sys.dm_exec_requests, visite o seguinte site da MSDN: http://msdn2.microsoft.com/en-us/library/ms177648.aspx
(http://msdn2.microsoft.com/en-us/library/ms177648.aspx)
A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 317375
(http://support.microsoft.com/kb/317375/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início