none
como diminuir o arquivo de LOG de transações no SQL Server 2005 ? após executar o Shrink o log volta a aumentar RRS feed

  • Pergunta

  • Prezados bom dia.

    Possuo um banco onde o arquivo de dados está com 13 GB e o arquivo de LOG já atingiu 400 GB. Está configurado o Recovery Model = FULL e backu up FULL diariamente. Agora, mesmo que eu utilize o SHRINK, o arquivo de LOG não diminui. ALguêm pode me ajudar ?

    quarta-feira, 19 de janeiro de 2011 12:34

Respostas

  • Nossa Luiz F. Nogueira,

     

    De certa forma é um prazer te explicar isso, mas preocupante, mas isso é normal, muitas pessoas apresentam dúvida sobre isso, acontece o seguinte:

     

    Temos 3 tipos de Recovery Model(Modo de recuperação), no banco de dados que você consegue mudar nas opções do banco de dados, esses 3 modos são:

     

    FULL, BULK-LOGGED e SIMPLE.

     

    FULL e BULK-LOGGED = Eles apresentam algumas diferenças, mais não vou aprofundar sobre isso agora, o que aconteçe é que quando possuímos o banco de dados em modo de recuperação FULL, todas as transações que são realizadas no banco de dados são gravadas no arquivo de LOG do banco de dados, o que faz com que o LOG começe a ficar cheio. Nesses modos de recuperação o que faz o LOG diminuir é somente um BACKUP DE LOG da base de dados, o que é diferente de realizar um backup de DADOS. Provavelmente o que está acontecendo é que toda a estrutura interna do arquivo de LOG esteja preenchida.

     

    SIMPLE = Essem é diferente, sempre que a transação é realizada, ele automaticamente realizada o TRUNCATE do LOG, por isso não existe backup de log quando temos o modo de recuperação no SIMPLE.

     

    Para resolver seu problema faça o seguinte:

     

    BACKUP DE LOG do Banco de Dados.

     

    Sintaxe: BACKUP LOG [NomeBancoDeDados]

         TO DISK = '[LOCAL]\[NOMEBACKUP].TRN'

     

     

    Shrink File Arquivo de LOG


    Sintaxe: DBCC SHRINKFILE (<FileName>, <TargetSize>)

     

    <FileName> = Nome do Arquivo de LOG

    <TargetSize> = KB

     

    Att,

     

     

     


    Luan.Moreno MCP || MCTS SQL Server 2005 Blog: http://luanmorenodba.wordpress.com Twitter: @luansql Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 19 de janeiro de 2011 13:48

Todas as Respostas

  • Luiz F Nogueira, bom dia!

     

    Primeiramente, com que frequência, você realiza o backup de LOG. Provavelmente seu arquivo de LOG esteja cheio principalmente por duas razões.

     

    1. - Não está sendo realizado BACKUP DE LOG, então o arquivo de log não é "esvaziado". Assim faça backup de LOG

    2. - Possuem transações abertas na qual ainda não foram fechadas, isso faz com que os VLF's (Virtual Log Files), fiquem ocupados, fazendo com que o LOG tenha que crescer.

     

    Att,

     

     


    Luan.Moreno MCP || MCTS SQL Server 2005 Blog: http://luanmorenodba.wordpress.com Twitter: @luansql Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 19 de janeiro de 2011 13:01
  • Luan , nunca foi realizado Backup de LOG. Somente é realizado 1 backup FULL por dia. 

    Uma dúvida que surgiu agora: O backup FULL não realiza o backup do LOG ? somente realizando o backup FULL o LOG não deveria diminuir ?

    Obrigado pela atenção até aqui.


    Luiz Fernando Nogueira
    quarta-feira, 19 de janeiro de 2011 13:10
  • Nossa Luiz F. Nogueira,

     

    De certa forma é um prazer te explicar isso, mas preocupante, mas isso é normal, muitas pessoas apresentam dúvida sobre isso, acontece o seguinte:

     

    Temos 3 tipos de Recovery Model(Modo de recuperação), no banco de dados que você consegue mudar nas opções do banco de dados, esses 3 modos são:

     

    FULL, BULK-LOGGED e SIMPLE.

     

    FULL e BULK-LOGGED = Eles apresentam algumas diferenças, mais não vou aprofundar sobre isso agora, o que aconteçe é que quando possuímos o banco de dados em modo de recuperação FULL, todas as transações que são realizadas no banco de dados são gravadas no arquivo de LOG do banco de dados, o que faz com que o LOG começe a ficar cheio. Nesses modos de recuperação o que faz o LOG diminuir é somente um BACKUP DE LOG da base de dados, o que é diferente de realizar um backup de DADOS. Provavelmente o que está acontecendo é que toda a estrutura interna do arquivo de LOG esteja preenchida.

     

    SIMPLE = Essem é diferente, sempre que a transação é realizada, ele automaticamente realizada o TRUNCATE do LOG, por isso não existe backup de log quando temos o modo de recuperação no SIMPLE.

     

    Para resolver seu problema faça o seguinte:

     

    BACKUP DE LOG do Banco de Dados.

     

    Sintaxe: BACKUP LOG [NomeBancoDeDados]

         TO DISK = '[LOCAL]\[NOMEBACKUP].TRN'

     

     

    Shrink File Arquivo de LOG


    Sintaxe: DBCC SHRINKFILE (<FileName>, <TargetSize>)

     

    <FileName> = Nome do Arquivo de LOG

    <TargetSize> = KB

     

    Att,

     

     

     


    Luan.Moreno MCP || MCTS SQL Server 2005 Blog: http://luanmorenodba.wordpress.com Twitter: @luansql Classifique as respostas. O seu feedback é imprescindível
    quarta-feira, 19 de janeiro de 2011 13:48