locked
Arquivos do sql com tamanho muito grande RRS feed

  • Pergunta

  • Olá  pessoal, procurando arquivos grandes em meu servidor veirifiquei que existem alguns arquivos na pasta LOG do sql server tais como "ERRORLOG.1,.2.3 etc" muito grandes, estes arquivos podem ser excluidos? o que posso verificar nestes arquivos e como?

    outra coisa é o arquivo msdbdata.mdf tb está grande, ele vai sendo usado junto com minha base? tem como diminuir o tamanho dele?

    qual a melhor maneira de diminuir o tamanho de um bd? excluir dados e fazer backup/restore?

    e para diminuir o tamanho do arquivo de log do meu bd, qual o melhor jeito?


    Obrigado a todos!
    • Movido Gustavo Maia Aguiar quarta-feira, 18 de novembro de 2009 13:57 (De:SQL Server - Desenvolvimento Geral)
    segunda-feira, 16 de novembro de 2009 22:18

Respostas

  • Darkducke,

    Vamos por partes:

    1 - Se não estou enganado estes arquivos são utilizados pelo SQL Server para armazenar as informações sobre ocorrência de erros ocorridas no SQL Server Agent, eu particularmente nunca armazei estes arquivos.

    2 - O arquivo msdbdata.mdf, é o arquivo de dados utilizado pela base de dados de sistemas MSDB, sendo este, banco de dados utilizado para armazenar as informações sobre os jobs ou atividades executadas através do SQL Server Agent.

    Em relação ao processo de exclusão, esse tipo de procedimento é muito discutido aqui no fórum, mas fazer uma simples exclusão de dados ou executar processos de Shrink File ou Shrink DB não são sim tão simples, muito menos os mais indicados.

    Sobre os arquivos de log se você deseja excluir, isso significa que você não deseja armazenar o log, sendo assim, acredito que o mais indicado é alterar o Recovery Model do seu banco de dados para Simples. 
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 16 de novembro de 2009 23:25
    Moderador
  • Olá!!

    Esses arquivo ERRORLOG, são arquivos de log de eventos do SQL. Utilizamos ele para verificar qualquer problema a nível de instância, até mesmo problemas de backup. O normal é que existam 6 desses arquivos, é o ciclo normal dos arquivos de log. Toda vez que o SQL Server é reiniciado, ele faz a reciclagem, ou seja, cria um arquivo novo e o atual é passa para o próximo. Ex: Se nesse momento existe o arquivo ERRORLOG, no próximo restart ele passará a se chamar ERRORLOG.1, e é criado um novo ERRORLOG.

    Se você quiser, é possível "reciclar" manualmente esses arquivos, de forma que o SQL Server, para isso use a seguinte instrução:

    EXEC master.sys.sp_cycle_errorlog

    Além disso, a sua MSDB está ficando grande pois nela ficam guardadas informações sobre histórico de execução de jobs e backups. Para isso, é preciso fazer a limpeza desses históricos. Dentro dos planos de manutenção do SQL Server existe uma tarefa que é chamada de "History Cleanup Task", usada exatamente para excluir esse histórico. Recomendo manter pelo menos 1 mês de informação, o resto pode ser excluído.

    Essa task executa basicamente este código:

    declare @dt datetime select @dt = cast(N'2009-10-20T08:50:48' as datetime)
    exec msdb.dbo.sp_delete_backuphistory @dt
    GO
    EXEC msdb.dbo.sp_purge_jobhistory  @oldest_date='2009-10-20T08:50:48'
    GO
    EXECUTE msdb..sp_maintplan_delete_log null,null,'2009-10-20T08:50:48'
    

    Depois de realizada a limpeza, poderá fazer um shrink da MSDB.


    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    terça-feira, 17 de novembro de 2009 10:52

Todas as Respostas

  • Darkducke,

    Vamos por partes:

    1 - Se não estou enganado estes arquivos são utilizados pelo SQL Server para armazenar as informações sobre ocorrência de erros ocorridas no SQL Server Agent, eu particularmente nunca armazei estes arquivos.

    2 - O arquivo msdbdata.mdf, é o arquivo de dados utilizado pela base de dados de sistemas MSDB, sendo este, banco de dados utilizado para armazenar as informações sobre os jobs ou atividades executadas através do SQL Server Agent.

    Em relação ao processo de exclusão, esse tipo de procedimento é muito discutido aqui no fórum, mas fazer uma simples exclusão de dados ou executar processos de Shrink File ou Shrink DB não são sim tão simples, muito menos os mais indicados.

    Sobre os arquivos de log se você deseja excluir, isso significa que você não deseja armazenar o log, sendo assim, acredito que o mais indicado é alterar o Recovery Model do seu banco de dados para Simples. 
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 16 de novembro de 2009 23:25
    Moderador
  • Obrigado Junior, vou excluir os arquivos de log manualmente, e alterar o recovery model, em relação ao tamanho do arquivo de log de minha base, o que vc me aconcelha a fazer para não usar Shrink File ou Shrink DB?

    Obrigado novamente!
    terça-feira, 17 de novembro de 2009 00:45
  • Olá!!

    Esses arquivo ERRORLOG, são arquivos de log de eventos do SQL. Utilizamos ele para verificar qualquer problema a nível de instância, até mesmo problemas de backup. O normal é que existam 6 desses arquivos, é o ciclo normal dos arquivos de log. Toda vez que o SQL Server é reiniciado, ele faz a reciclagem, ou seja, cria um arquivo novo e o atual é passa para o próximo. Ex: Se nesse momento existe o arquivo ERRORLOG, no próximo restart ele passará a se chamar ERRORLOG.1, e é criado um novo ERRORLOG.

    Se você quiser, é possível "reciclar" manualmente esses arquivos, de forma que o SQL Server, para isso use a seguinte instrução:

    EXEC master.sys.sp_cycle_errorlog

    Além disso, a sua MSDB está ficando grande pois nela ficam guardadas informações sobre histórico de execução de jobs e backups. Para isso, é preciso fazer a limpeza desses históricos. Dentro dos planos de manutenção do SQL Server existe uma tarefa que é chamada de "History Cleanup Task", usada exatamente para excluir esse histórico. Recomendo manter pelo menos 1 mês de informação, o resto pode ser excluído.

    Essa task executa basicamente este código:

    declare @dt datetime select @dt = cast(N'2009-10-20T08:50:48' as datetime)
    exec msdb.dbo.sp_delete_backuphistory @dt
    GO
    EXEC msdb.dbo.sp_purge_jobhistory  @oldest_date='2009-10-20T08:50:48'
    GO
    EXECUTE msdb..sp_maintplan_delete_log null,null,'2009-10-20T08:50:48'
    

    Depois de realizada a limpeza, poderá fazer um shrink da MSDB.


    Abraço!!

    Classifiquem as respostas. O Fórum agradece!!
    terça-feira, 17 de novembro de 2009 10:52
  • Olá Alexandre, obrigado pela resposta,

    qual o comando que eu devo executar para reduzir o tamanho destes arquivos

    msdbdata.mdf
    minhabasededados_log.ldf

    respectivamente!?
    não quero fazer nada de errado na base!

    Obrigado!
    segunda-feira, 7 de dezembro de 2009 03:29
  • Dark,

    Você poderia utilizar o comando DBCC Shrinkfile.
    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    segunda-feira, 7 de dezembro de 2009 11:48
    Moderador
  • Junior, poderia me mostrar na pratica como é este comando?
    não sei utilizar preciso desta solução rápido e estou sem tempo para estudar no momento.
    isso para o arquivo de .LOG, e para o arquivo msdbdata.mdf ?


    os arquivos de ERRORLOG.n  na pasta LOG, posso simplismente exclui-los ou tenho que usar o comando
    EXEC master.sys.sp_cycle_errorlog citado pelo nosso amigo acima?

    Obs: executei o comando DBCC SHRINKFILE (minhabase_log, 10000) WITH NO_INFOMSGS

    não deu erro mais não reduziou o tamanho do arquivo LDF, o que pode ser?

    Obrigado novamente!

    att.
    sexta-feira, 11 de dezembro de 2009 02:06