Compartilhar via


Gerenciar o tamanho do arquivo de log de transações

Em alguns casos, pode ser útil reduzir fisicamente ou expandir o arquivo de log físico do log de transações de um banco de dados do SQL Server. Este tópico contém informações sobre como monitorar o tamanho de um log de transações do SQL Server, reduzir o log de transações, adicionar ou ampliar um arquivo de log de transações, otimizar a taxa de crescimento do log de transações tempdb e controlar o crescimento de um arquivo de log de transações.

Monitorar o uso do espaço de log

Você pode monitorar o uso do espaço de log usando o DBCC SQLPERF (LOGSPACE). Esse comando retorna informações sobre a quantidade de espaço de log usada no momento e indica quando o log de transações precisa de truncamento. Para obter mais informações, consulte DBCC SQLPERF (Transact-SQL). Para obter informações sobre o tamanho atual de um arquivo de log, seu tamanho máximo e a opção de crescimento automático do arquivo, você também pode usar as colunas de tamanho, max_size e crescimento para esse arquivo de log em sys.database_files. Para obter mais informações, confira sys.database_files (Transact-SQL).

Importante

Recomendamos que você evite sobrecarregar o disco de log.

Reduzir o tamanho do arquivo de log

Para reduzir o tamanho físico de um arquivo de log físico, você deve diminuir o arquivo de log. Isso é útil se você souber que um arquivo de log de transações contém espaço não utilizado que você não precisará. A redução de um arquivo de log só pode ocorrer enquanto o banco de dados estiver online e, também, pelo menos um arquivo de log virtual for gratuito. Em alguns casos, a redução do log pode não ser possível até que ocorra o próximo truncamento de log.

Observação

Fatores, como uma transação de longa duração, que mantêm os arquivos de log virtuais ativos por um período prolongado podem restringir a redução do log ou até mesmo impedir seu encolhimento. Para obter informações sobre fatores que podem atrasar o truncamento do log, consulte O Log de Transações (SQL Server).

A redução de um arquivo de log remove um ou mais arquivos de log virtuais que não contêm nenhuma parte do log lógico (ou seja, arquivos de log virtuais inativos). Quando um arquivo de log de transações é reduzido, arquivos de log virtuais inativos suficientes são removidos do final do arquivo de log para reduzir o log para aproximadamente o tamanho de destino.

Para reduzir um arquivo de log (sem reduzir arquivos de banco de dados)

Para monitorar eventos de redução de arquivo de log

To monitor log space

Observação

A redução de arquivos de banco de dados e de log pode ser definida para ocorrer automaticamente. No entanto, aconselhamos não realizar o encolhimento automático, e a propriedade do banco de dados autoshrink é definida como FALSE por padrão. Se autoshrink for definido como TRUE, a redução automática reduzirá o tamanho de um arquivo somente quando mais de 25% de seu espaço não for usado. O arquivo é reduzido de forma que 25% de seu tamanho seja de espaço não utilizado ou ele tenha o tamanho original, o que for maior. Para obter informações sobre como alterar a configuração da propriedade autoshrink, consulte Exibir ou alterar as propriedades de um banco de dados - use a propriedade Redução Automática na página Opções - ou ALTER DATABASE SET Options (Transact-SQL) - use a opção AUTO_SHRINK.

Adicionar ou ampliar um arquivo de log

Como alternativa, você pode ganhar espaço ampliando o arquivo de log existente (se o espaço em disco permitir) ou adicionando um arquivo de log ao banco de dados, normalmente em um disco diferente.

  • Para adicionar um arquivo de log ao banco de dados, use a cláusula ADD LOG FILE da instrução ALTER DATABASE. Adicionar um arquivo de log permite que o log cresça.

  • Para ampliar o arquivo de log, use a cláusula MODIFY FILE da instrução ALTER DATABASE, especificando os parâmetros de SIZE e MAXSIZE. Para saber mais, confira ALTER DATABASE (Transact-SQL).

Otimizar o tamanho do log de transações tempdb

Reiniciar uma instância de servidor redimensiona o log de transações do banco de dados tempdb para seu tamanho original de pré-crescimento automático. Isso pode reduzir o desempenho do log de transações tempdb . Você pode evitar essa sobrecarga aumentando o tamanho do log de transações tempdb depois de iniciar ou reiniciar a instância do servidor. Para obter mais informações, consulte o Banco de Dados tempdb.

Controlar o crescimento de um arquivo de log de transações

Você pode usar a instrução ALTER DATABASE (Transact-SQL) para gerenciar o crescimento de um arquivo de log de transações. Observe o seguinte:

  • Para alterar o tamanho do arquivo atual em unidades KB, MB, GB e TB, use a opção SIZE.

  • Para alterar o incremento de crescimento, use a opção FILEGROWTH. Um valor 0 indica que o crescimento automático está definido como off e nenhum espaço adicional é permitido. Um pequeno incremento automático em um arquivo de log pode reduzir o desempenho. O incremento de crescimento do arquivo em um arquivo de log deve ser suficientemente grande para evitar a expansão frequente. O incremento de crescimento padrão de 10% é geralmente adequado.

    Para obter informações sobre como alterar a propriedade de crescimento de arquivo em um arquivo de log, consulte ALTER DATABASE (Transact-SQL).

  • Para controlar o tamanho máximo de um arquivo de log em unidades KB, MB, GB e TB ou para definir o crescimento como UNLIMITED, use a opção MAXSIZE.

Consulte Também

BACKUP (Transact-SQL)
Solução de problemas em um log de transação completa (SQL Server Erro 9002)