Como posso gerir o tamanho do registo do servidor SQL

estou a tentar gerir o tamanho de um ficheiro de Registo SQL Server 2008. Tenho uma base de dados que é carregada uma vez por dia. O modelo de recuperação simples é o melhor ajuste porque não há transações que não a carga da manhã, e eu posso recriar esses registros. Meus objetivos São ter o diário de transações em um tamanho fixo, grande o suficiente para que ele não tenha que alocar novo espaço durante a carga.

O meu problema é que o tronco continua a crescer. Sei que o registo devia estar marcado. para reutilização, mas porque é que o tronco continua a crescer? O log_reuse_wait_desc mostra "nada".

Posso encolher o ficheiro de registo para 1 MB, por isso sei que não há transacções nele. Eu posso configurar um trabalho para fazer isso, mas eu preferiria deixar o registro em 500MB, o que é suficiente para lidar com as cargas diárias. Se eu fizer isto, o tronco cresce.

Como posso manter o registo num tamanho consistente?

por favor, note: encolher o ficheiro de registo não aborda esta questão. Eu sei como fazer isso. Estou a tentar. para encontrar uma maneira de o espaço no diário de operações ser reutilizado.

Author: Ed Mays, 2009-01-26

4 answers

O ficheiro de registo é usado para fins de transacção, mesmo que a base de dados esteja em Modo de recuperação simples. Se o tamanho do LOG está realmente crescendo além de 500 MB, então alguém está executando uma consulta ou procedimento armazenado que está exigindo esse espaço.

Por exemplo, talvez esteja a criar índices com base nas suas tabelas de relatórios. Isso será feito dentro de uma transação para que as alterações possam ser revertidas em caso de erro. No entanto, o espaço usado será liberado depois para outros transacções uma vez concluídas. Então, se o tamanho do log está começando em 1MB e aumentando para dizer 700MB, então algo está sendo feito que requer esse espaço. Se você bloquear o tamanho para 500MB, você eventualmente receberá um erro de "log file out of space".

Mas se você realmente quiser corrigi-lo em 500MB, você pode fazer o seguinte: (Estou a usar o servidor sql 2005)

  1. lançar Microsoft SQL Server Management Studio
  2. Localize a sua base de dados e clique com o botão direito. Seleccionar Propriedade.
  3. carregue na secção de Ficheiros
  4. Localiza a linha do ficheiro de Registo.
  5. mudar o tamanho inicial para: 500
  6. localize a secção de Auto-Crescimento e carregue na elipse (...)
  7. Desligue A Opção "Activar O Auto-Crescimento". clicar.
  8. Clique em OK para fazer a mudança.

Nota: também poderá definir o tamanho máximo do ficheiro de registo na secção "auto-crescimento".

Em alternativa, pode usar o seguinte script para fazer a alteração. Substituir o nome da base de dados pelo valor apropriado. Também alterar o nome do ficheiro de Registo, se necessário.

USE [master]
GO
ALTER DATABASE [DatabaseName] MODIFY FILE ( NAME = N'DATABASENAME_Log', SIZE = 512000KB , FILEGROWTH = 0)
GO

 25
Author: beach, 2009-01-26 19:29:41

Criar um trabalho de manutenção que apoie o DB e encolhe o log

 4
Author: SQLMenace, 2009-01-26 18:53:22

O comando DBCC Shrinkfile permite-lhe indicar um tamanho-alvo:

DBCC SHRINKFILE (DataFile1, 7)

Reduz o ficheiro DataFile1 para 7MB

Documento em: MSDN

 3
Author: cjk, 2009-01-26 19:17:34
Do início da minha cabeça, podes usar o ficheiro de encolhimento do DBCC para fazer isto.
 0
Author: Miles D, 2009-01-26 19:13:07