Artigo: 317375 - Última revisão: quinta-feira, 27 de Março de 2008 - Revisão: 6.3 Um registo de transacções aumenta inesperadamente ou fica cheio num computador que está a executar o SQL Server
Nesta páginaSumárioNo SQL Server 7.0, no SQL Server 2000 e no SQL Server 2005, com a definição autogrow, ficheiros de registo de transacções podem expandir automaticamente. Normalmente, o tamanho do ficheiro log transacções stabilizes quando pode conter o número máximo de transacções que podem ocorrer entre truncations de registo de transacções que accionam a pontos de verificação ou cópias de segurança de registo de transacções. No entanto, em algumas situações que o registo de transacções poderá tornar-se muito grande e execute espaço ou ficar cheio. Normalmente, recebe a seguinte mensagem de erro quando uma transacção iniciar ficheiro demora mais espaço em disco disponível e não pode expandir mais: Erro: 9002, gravidade: 17, estado: 2 O ficheiro de registo de base de dados ' %. * 'ls está cheio. Erro: 9002, gravidade: 17, estado: 2 O registo de transacções de base de dados ' %. * 'ls está cheio. Para saber por que razão espaço no registo de não pode ser reutilizado, consulte a coluna log_reuse_wait_desc sys.databases Além disso, poderá resultar expansão de registo de transacções nas seguintes situações:
Faz com queExpansão de registo de transacções pode ocorrer devido os motivos ou cenários seguintes:
Transacções não consolidadasTransacções explícitas permanecem não consolidadas se não emitem um comando COMMIT ou ROLLBACK explícito. Este mais ocorre frequentemente quando uma aplicação emite um ' Cancelar ' ou um comando Transact SQL KILL sem um comando ROLLBACK correspondente. Ocorre o cancelamento de transacção, mas não recuperar; por este motivo, o SQL Server não é possível truncar todas as transacções que ocorre depois porque a transacção abortada ainda está aberta. Pode utilizar a referência DBCC OPENTRAN Transact-SQL para verificar se existe uma transacção activa numa base de dados num determinado momento. Para obter mais informações sobre este cenário específico, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:295108
(http://support.microsoft.com/kb/295108/
)
Transacções incompletas poderão conter grande número de bloqueios e bloqueio de incidente 171224
(http://support.microsoft.com/kb/171224/
)
Compreender como funciona o comando Eliminar Transact-SQL Além disso, consulte o tópico "DBCC OPENTRAN" no SQL Server Books Online.cenários que podem resultar em transacções não consolidadas :
Transacções extremamente grandesRegistos nos ficheiros de registo de transacções são truncados numa transacção por transacção. Se o âmbito de transacção for grande, que a transacção e quaisquer transacções iniciado depois de não são removidos do registo de transacções, a menos que termine. Isto pode resultar em ficheiros de registo grande. Se a transacção é suficientemente grande, o ficheiro de registo pode utilizar o espaço em disco disponível e fazer com que tipo de mensagem de erro como erro 9002 "registo de transacções completo". Para obter informações adicionais sobre o que fazer quando receber este tipo de mensagem de erro são fornecidas na secção "Mais informação" deste artigo. Além disso, demora muito tempo e a capacidade do SQL Server para recuperar transacções grandes.Operações: DBCC DBREINDEX e CREATE INDEXDevido às alterações no modelo de recuperação no SQL Server 2000, quando utiliza o modo de recuperação total e executar o comando DBCC DBREINDEX, o registo de transacções poderá expandir significativamente mais comparados do SQL Server 7.0 num modo de recuperação equivalente com a utilização de SELECT INTO ou BULK COPY e "truncagem. Terminar chkpt.".Embora o tamanho do registo de transacções após a operação de DBREINDEX pode ser um problema, esta abordagem fornece melhor desempenho de restauro do registo. Durante o restauro de cópias de segurança de registo de transacçõesIsto é descrito no seguinte artigo de base de dados de conhecimento da Microsoft:232196
(http://support.microsoft.com/kb/232196/
)
Espaço de registo utilizado parece aumentar depois de restaurar a partir da cópia de segurança Se definiu o SQL Server 2000 para utilizar o modo Bulk-Logged e emitir uma instrução SELECT INTO ou BULK COPY, cada extensão alterado é marcado e, em seguida, foi cópias quando cria uma cópia do registo de transacções. Apesar de Isto permite a cópia de registos de transacções e recuperar de falhas, mesmo depois de efectuar operações em massa, esta acção adiciona o tamanho dos registos de transacções. SQL Server 7.0 não inclui esta funcionalidade. SQL Server 7.0 só regista as extensões são alteradas, mas não regista extensões reais. Por conseguinte, o registo ocupa significativamente mais espaço no SQL Server 2000 que no SQL Server 7.0 no modo de registo em massa mas não tanto como acontece no modo de ecrã inteiro. Aplicações de cliente não processam todos os resultadosSe emitir uma consulta para o SQL Server e não processa os resultados imediatamente, poderá ser mantendo bloqueios e reduzir a concorrência no servidor.Por exemplo, suponha que emitir uma consulta que necessita de linhas de duas páginas para preencher o resultado definido. SQL Server analisa, compila e executa a consulta. Isto significa que bloqueios partilhados são colocados em duas páginas que contêm as linhas que tem de ter para satisfazer a consulta. Além disso, suponha que nem todas as linhas ajustar a um pacote de SQL Server TDS (o método pelo qual o servidor comunica com o cliente). Os pacotes TDS são preenchidos e enviados ao cliente. Se todas as linhas na primeira página se ajustar no pacote TDS, SQL Server liberta o bloqueio partilhado nessa página, mas deixa um bloqueio partilhado na segunda página. SQL Server, em seguida, aguarda que o cliente pedir mais dados (que pode efectuar isto utilizando DBNEXTROW/DBRESULTS, SQLNextRow/SQLResults ou FetchLast/FetchFirst por exemplo). Isto significa que o bloqueio partilhado é mantido até que o cliente pede o resto dos dados. Outros processos que pedem dados a partir da segunda página podem estar bloqueados. Consulta o tempo limite antes de um registo de transacções conclui a expansão ou receber mensagens de erro 'Registo completo' falsasNesta situação, embora não exista espaço em disco suficiente, ainda recebe uma "fora do espaço de" mensagem de erro.Esta situação varia para o SQL Server 7.0 e SQL Server 2000. Uma consulta pode causar o registo transacção expandir automaticamente se o registo de transacções estiver quase cheio. Isto pode demorar mais tempo e uma consulta pode ser parada ou pode exceder o respectivo período de tempo de espera devido a isto. SQL Server 7.0 devolve erro 9002 nesta situação. Este problema não se aplica para o SQL Server 2000. No SQL Server 2000, se tiver a opção de redução automática activada para uma base de dados, existe um extremamente pequena tempo durante o qual um registo de transacções tenta expandir automaticamente, mas não porque a função de redução automática está em execução em simultâneo. Isto também poderá provocar falsas instâncias do erro 9002. Normalmente, a expansão automática dos ficheiros de registo de transacções ocorre rapidamente. No entanto, nas seguintes situações, poderá demorar mais tempo do que o habitual:
Transacções unreplicatedPode expandir o tamanho registo de transacções da base de dados o publisher se estiver a utilizar a replicação. As transacções que afectam os objectos que são replicados estão marcadas como "Para replicação". Estas transacções, como transações não consolidadas, não são eliminadas após o ponto de verificação ou depois de cópia de segurança do registo de transacções até a tarefa de leitor de registo copia as transacções para a base de dados de distribuição e desmarca os. Se um problema com a tarefa de leitor de registo impede ler estas transacções na base de dados o publisher , o tamanho do registo transacção poderá continuar a expandir como o número de transacções não replicadas aumenta. Pode utilizar a referência DBCC OPENTRAN Transact-SQL para identificar a transacção mais antiga não replicadas.Para mais informações sobre como resolver transacções unreplicated, consulte os tópicos "sp_replcounters" e "sp_repldone" no SQL Server Books Online. Para obter mais informações, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft: 306769
(http://support.microsoft.com/kb/306769/
)
CORRECÇÃO: Registo de transacções de base de dados publicada do snapshot não pode ser truncado 240039
(http://support.microsoft.com/kb/240039/
)
CORRECÇÃO: O DBCC OPENTRAN não regista informações de replicação 198514
(http://support.microsoft.com/kb/198514/
)
CORRECÇÃO: O restauro para o novo servidor provoca transacções permanecer no registo Mais InformaçãoO registo de transacções para uma base de dados é gerido como um conjunto de virtual ficheiros de registo (VLF) cujo tamanho do SQL Server internamente determina com base no tamanho total do ficheiro de registo e o incremento de crescimento em utilização quando expande o registo. Um registo expande-se sempre em unidades de VLF todo e só pode comprimir para um limite VLF. Pode existir um VLF das três estados: ACTIVE RECUPERÁVEIS e REUTILIZÁVEIS.
Para obter informações adicionais, consulte o tópico "Transaction Log Physical Architecture" no SQL Server Books Online. Além disso, pode ver um diagrama excelente e debate na página 190 do "No interior SQL Server 7.0" (Soukup, Ron. Interior Microsoft SQL Server 7.0, Microsoft Press, 1999) e também nas páginas 182 através de 186 de "No interior SQL Server 2000" (Delaney, Kalen. Interior Microsoft SQL Server 2000, Microsoft Press, 2000). Bases de dados SQL Server 7.0 e SQL Server 2000 tem opções autogrow e autoshrink. Pode utilizar estas opções para ajudá-lo para comprimir ou expandir o log de transacções. Para obter mais informações sobre como estas opções podem afectar o servidor, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base: 315512
(http://support.microsoft.com/kb/315512/
)
Considerações para configuração Autogrow e Autoshrink no SQL Server Existe uma diferença entre a truncagem versus a compressão do ficheiro de registo de transacções. Quando o SQL Server trunca um ficheiro de registo de transacções, isto significa que o conteúdo desse ficheiro (por exemplo, as transacções consolidadas) são eliminados. No entanto, quando visualiza o tamanho do ficheiro uma perspectiva de espaço em disco (por exemplo, no Explorador do Windows ou utilizando o comando dir ) o tamanho permanece inalterado. No entanto, o espaço dentro do ficheiro .ldf agora pode ser reutilizado por novas transacções. Apenas quando o SQL Server diminui o tamanho do ficheiro log transacções,, na realidade, verá uma alteração no tamanho físico do ficheiro de registo.Para obter mais informações sobre como diminuir registos de transacções, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft: 256650
(http://support.microsoft.com/kb/256650/
)
Como diminuir o registo de transacções do SQL Server 7.0 272318
(http://support.microsoft.com/kb/272318/
)
Diminuir o registo de transacções no SQL Server 2000 com o comando DBCC SHRINKFILE Para obter mais informações sobre utilização de registo de transacção do SQL Server 6.5, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base: 110139
(http://support.microsoft.com/kb/110139/
)
Causas de registo de transacções SQL encher Como localizar consultas consumam uma grande quantidade de espaço de registo no SQL Server 2005No SQL Server 2005, pode utilizar a vista de gestão dinâmica sys.dm_tran_database_transactions (DMV) para localizar as consultas que consomem grandes quantidades de espaço de registo. As seguintes colunas o sys.dm_tran_database_transactions DMV pode ser útil:
Para obter mais informações sobre sys.dm_tran_database_transactions DMV, visite o seguinte Web site da 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 sys.dm_tran_session_transactions DMV, visite o seguinte site da Web 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 sys.dm_exec_requests DMV, visite o seguinte site da Web 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 de Artigos
|






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


Voltar ao topo