DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 873235 - Última revisão: quarta-feira, 29 de Fevereiro de 2012 - Revisão: 4.0

Nesta página

INTRODUÇÃO

Este artigo descreve os passos que deve tomar quando os registos de transacção se tornarem demasiado grandes. Registos de transacção integrais podem tornar sua base de dados Microsoft SQL Server inutilizável. Este artigo descreve como truncar e reduzir os registos de transacção, e como prevenir que os registos de transacção cresçam inesperadamente.

Mais Informação

Reduzir a dimensão do registo de transacção

Para recuperar de uma situação na qual os registos de transacção estejam cheios e tenha de reduzir a dimensão dos registos de transacção. Para fazer isto deve truncar as transacções inactivas no seu registo de transacções e reduzir o ficheiro de registo de transacção.

Nota Os registos de transacção são muito importantes para manter a integridade transaccional da base de dados. Portanto não deve eliminar os ficheiros de registo de transacção mesmo após fazer uma cópia de segurança da sua base de dados e dos registos de transacção.


Para obter mais informações sobre como reduzir o tamanho do registo de transacção, visite o seguinte Web site da Microsoft:
Reduzir o Registo de Transacção para o SQL Server 2000 (http://msdn.microsoft.com/pt-pt/library/aa174524(v=sql.80).aspx)
Reduzir o Registo de Transacção SQL Server 2005 (http://technet.microsoft.com/pt-pt/library/ms178037(SQL.90).aspx)

Truncar as transacções inactivas no seu registo de transacções

Quando os registos de transacção estiverem completos, tem de efectuar imediatamente uma cópia de segurança do seu ficheiro de registo de transacção. Durante a criação da cópia de segurança dos seus ficheiros de registo de transacção, o SQL Server trunca automaticamente a parte inactiva do registo de transacções. A parte inactiva do ficheiro de registo de transacções contém as transacções concluídas e, como tal, o ficheiro de registo de transacção já não é utilizado pelo SQL Server durante o processo de recuperação. O SQL Server reutiliza este espaço inactivo e truncado no registo de transacções, ao invés de permitir o crescimento contínuo do registo de transacções e da consequente utilização de mais espaço.

Para informações adicionais sobre os problemas que deverá considerar quando efectua uma cópia de segurança dos registos de transacções e os problemas que deverá considerar quando restaurar as cópias de segurança do registo de transacções, visite os seguintes tópicos no SQL Server Books Online:
  • Cópias de segurança do registo de transacção
  • Cópia de segurança e restauro do registo de transacção
Pode também eliminar as transacções inactivas desde um ficheiro de registo de transacção utilizando o método Truncar. Para informações adicionais sobre a truncagem de registos de transacções, consulte o tópico "Truncar o registo de transacções" no SQL Server Books Online.

Importante Após truncar manualmente os ficheiros de registo de transacção, deverá criar uma cópia de segurança total da base de dados antes de criar uma cópia de segurança do registo de transacção.

Para obter informações adicionais sobre os problemas que podem ocorrer quando truncar os ficheiros de registo de transacção, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
62866  (http://support.microsoft.com/kb/62866/pt/ ) Razões pelas quais o registo de transacção de SQL não está a ser truncado

Diminuir o ficheiro de registo de transacção

A operação de criação da cópia de segurança ou o método de Truncagem não reduzem o tamanho do ficheiro de registo. Para reduzir a dimensão do ficheiro de registo de transacção, deverá reduzir o ficheiro de registo de transação. Para reduzir um ficheiro de registo de transacção para a dimensão pedida e para remover as páginas não utilizadas, deverá utilizar a operação DBCC SHRINKFILE. A instrução DBCC SHRINKFILE Transact-SQL apenas pode reduzir a parte inactiva no interior do ficheiro de registo.

Nota A instrução DBCC SHRINKFILE Transact-SQL não pode por si só truncar o registo e reduzir o espaço utilizado no interior do ficheiro de registo.

Para obter mais informações sobre a redução dos ficheiros de registo de transacção, consulte os seguintes tópicos no SQL Server Books Online:
  • Reduzir o registo de transacção
  • DBCC SHRINKFILE
Para obter mais informações sobre como reduzir os ficheiros do registo de transacção no SQL Server 2000, clique no seguinte número de artigo para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
272318  (http://support.microsoft.com/kb/272318/pt/ ) Reduzir o registo de transacção no SQL Server 2000 com DBCC SHRINKFILE
Para obter informações adicionais sobre os problemas que podem ocorrer quando reduzir os ficheiros de registo de transacção, clique nos números de artigo seguintes para visualizar os artigos na Base de Dados de Conhecimento da Microsoft:
814574  (http://support.microsoft.com/kb/814574/pt/ ) PROBLEMA: Mensagem de erro: "Não é possível reduzir o ficheiro de registo ..." ocorre quando reduz o ficheiro de registo de transacção
324432  (http://support.microsoft.com/kb/324432/pt/ ) PROBLEMA: Os comandos DBCC SHRINKFILE e SHRINKDATABASE poderão não funcionar devido a texto subpovoado, ntext ou colunas de imagem

Impedir que os ficheiros de registo de transacção cresçam de forma inesperada

Para impedir que os ficheiros de registo de transacção cresçam de forma inesperada, considere utilizar um dos seguintes métodos:
  • Configure a dimensão dos ficheiros de registo de transacção para um valor elevado de modo a evitar a expansão automática dos ficheiros de registo de transacção.
  • Configure a expansão automática dos ficheiros de registo de transacção utilizando unidades de memória em vez de uma percentagem após ter avaliado exaustivamente a dimensão de memória óptima.

    Para obter informações adicionais sobre os problemas a considerar quando configura a opção de aumento automático, clique no número de artigo que se segue para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
    315512  (http://support.microsoft.com/kb/315512/pt/ ) Considerações para a configuração de aumento automático e redução automática
  • Altere o modelo de recuperação. Se ocorrer um desastre ou danos nos dados, deverá recuperar a sua base de dados de forma a que a consistência de dados, assim como a integridade transaccional da base de dados sejam mantidas. Com base na importância dos dados na sua base de dados, poderá utilizar um dos seguintes modelos de recuperação para determinar a forma como os seus dados são copiados e qual a sua exposição à perda de dados:
    • Modelo de recuperação simples
    • Modelo de recuperação integral
    • Modelo de recuperação Bulk-logged
    Utilizando o modelo de recuperação simples, poderá recuperar a sua base de dados até à cópia de segurança mais recente da sua base de dados. Utilizando o modelo de recuperação integral ou o modelo de recuperação integral, poderá recuperar a sua base de dados até ao ponto em que ocorreu a falha, restaurando a sua base de dados com as cópias de segurança do ficheiro de registo de transacção.

    Por defeito, no SQL Server 2000 assim como no SQL Server 2005, o modelo de recuperação para uma base de dados SQL Server está definido como o modelo de recuperação Integral. Com o modelo de recuperação integral, as cópias de segurança regulares do ficheiro de transacção são utilizadas para impedir o crescimento desproporcionado do tamanho do ficheiro de registo de transacção em relação à base de dados. No entanto, se as cópias regulares do registo de transacção não forem executadas, o ficheiro de registo de transacção aumentarão ao ponto de encher o disco e poderá não ser capaz de executar operações de modificação de dados na base de dados do SQL Server.

    Poderá alterar o modelo de recuperação de integral para simples, caso não deseje utilizar os ficheiros de registo de transacções durante uma operação de recuperação de um desastre.
  • Realize regularmente cópias de segurança dos ficheiros de registo de transacções para eliminar as transacções inactivas no seu registo de transacção.
  • Faça com que as transacções sejam pequenas.
  • Certifique-se de que não continuam a ser executadas transacções não cometidas durante um tempo indefinido.
  • Agende a opção de Actualizar Estatísticas para que ocorra diariamente.
  • Para desfragmentar os índices, para beneficiar o desempenho de trabalho no seu ambiente de produção, utilize a declaração DBCC INDEXDEFRAG Transact-SQL em vez da declaração DBCC DBREINDEX Transact-SQL. Se executar a declaração DBCC DBREINDEX, o registo de transacções poderá expandir-se significativamente quando a sua base de dados SQL Server se encontrar no modo de recuperação Integral. Para além disso, a declaração DBCC INDEXDEGRAG não se sustém durante muito tempo, ao contrário da declaração DBCC DBREINDEX.

    Para obter mais informações sobre a desfragmentação de índices no SQL Server 2000, consulte o seguinte Web site da Microsoft:
    Melhores práticas de desfragmentação dos índices Microsoft SQL Server 2000 (http://technet.microsoft.com/pt-pt/library/cc966523.aspx)
    Se tiver de executar a declaração DBCC DBREINDEX como uma tarefa que faz parte do plano de manutenção da base de dados, deverá dividir a tarefa em múltiplas tarefas. Para além disso, deverá realizar as frequentes cópias de segurança para os registos de transacção entre a execução das tarefas.

Mais informações acerca dos ficheiros de registo de transacção

No SQL Server 2000 e no SQL Server 2005, cada base de dados contém pelo menos um ficheiro de dados e um ficheiro de registo de transacção. O SQL Server armazena os dados fisicamente no ficheiro de dados. O ficheiro de registo de transacção armazena os detalhes de todas as modificações que executar na sua base de dados SQL Server e os detalhes das transacções que executaram cada modificação. Uma vez que a integridade transaccional é considerada uma característica fundamental e intrínseca do SQL Server, o registo dos detalhes das transacções não pode ser desactivado no SQL Server.

O ficheiro de registo de transacção é logicamente dividido em segmentos mais pequenos que são referidos como ficheiros de registo virtuais. No SQL Server 2000, pode configurar o ficheiro de registo de transacção para se expandir conforme necessário. A expansão do ficheiro de transacção pode ser governada pelo utilizador ou então configurada para utilizar todo o espaço de disco disponível. Quaisquer outras modificações que o SQL Server efectuar à dimensão do ficheiro de registo de transacção, tal como truncar os ficheiros de registo de transacção ou aumentar os ficheiros de registo de transacção, são executadas em unidades de ficheiros de registo virtuais.

Se o ficheiro de registo de transacção que corresponde a uma base de dados de SQL Server estiver cheio e caso tenha definido a opção de crescimento automático dos ficheiros de registo de transacção, o ficheiro de registo de transacção aumentará em unidades de ficheiros de registo virtual. Ocasionalmente, o ficheiro de registo de transacção poderá ser demasiado grande e deixá-lo sem espaço no disco. Quando um ficheiro de registo de transacção crescer até o ficheiro de registo utilizar todo o espaço disponível no disco, deixará de poder desempenhar quaisquer operações de modificações de dados na sua base de dados. Adicionalmente, o SQL Server poderá marcar a sua base de dados como suspeita devido à falta de espaço para a expansão do registo de transacção.

Para obter informações adicionais sobre os cenários que podem provocar o crescimento inesperado do ficheiro de registo de transacção, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft:
317375  (http://support.microsoft.com/kb/317375/pt/ ) O registo de transacção cresce inesperadamente ou fica cheio no SQL Server

Referências

Para informações adicionais sobre a resolução do problema da necessidade de espaço de disco adicional durante o processo de recuperação, consulte o tópico "Espaço insuficiente no disco" no SQL Server Books Online. Para informações adicionais sobre a arquitectura do registo de transacção, consulte os seguintes tópicos no SQL Server Books Online:
  • Arquitectura do registo de transacção
  • Arquitectura lógica do registo de transacção
  • Arquitectura física do registo de transacção
Para obter mais informações acerca dos modelos de recuperação no SQL Server 2000, consulte os seguintes tópicos no SQL Server Books Online:
  • Seleccionar um modelo de recuperação
  • Recuperação simples
  • Recuperação integral
  • Recuperação Bulk-logged
  • Alternar modelos de recuperação


A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
Palavras-chave: 
kbsqlsetup kbdiskmemory kbdisasterrec kbhowto kbconfig kbinfo kbcip KB873235
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft