none
Backup de log RRS feed

  • Pergunta

  • Olá pessoal estou com um problema .... Tenho um backup de log que é feito de 3 em 3 horas das 10:00 da manhã até as 23:00 horas.

    Até ai tudo bem.. gostaria de saber como fazer para que se o arquivo de log ocupar mais de 60% do arquivo total de log ele gerar um backup do log automaticamente... Muito Obrigado

    segunda-feira, 23 de maio de 2011 00:25

Respostas

  • Boa Noite,

    Use os alertas do SQL Server. Foram feitos exatamente para isso. Você pode criar um alerta utilizando contadores do Performance Monitor. Para esse caso, o contador % log used serve. Crie um alerta para que quando esse contador do seu banco específico chegar a 60% um job seja iniciado. O job deve conter o comando de backup

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 23 de maio de 2011 02:28
    • Marcado como Resposta Andrius I segunda-feira, 23 de maio de 2011 02:41
    segunda-feira, 23 de maio de 2011 02:28

Todas as Respostas

  • Andrius,

    Você deseja fazer uma comparativo entre o arquivo de backup e o arquivo de log?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    segunda-feira, 23 de maio de 2011 00:33
    Moderador
  • ACho que sim , tenho um arquivo de log que cresce de 5 em 5 mb  com crescimento ilimitado... então quero que faça o BACKUP via JOB quando o arquivo de log ocupar mais de 60% do arquivo total... Não sei se fui claro...
    Obrigado.
    segunda-feira, 23 de maio de 2011 00:38
  • Andrius,

    Cara, eu entendi, mas me fale uma coisa, este job será executado de quanto em quanto tempo?

    Não verdade seria um comparativo entre o arquivo de dados e o arquivo de log?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    segunda-feira, 23 de maio de 2011 00:41
    Moderador
  • O JOB está executando de 3 em 3 horas das 10hrs até as 23hrs.. Acho que seria um comparativo, tipo se o arquivo de log ocupar mais de 60% do arquivo total de log ele gera um backup de log automaticamente...
    segunda-feira, 23 de maio de 2011 00:46
  • Andrius,

    Se o seu arquivo de log está com crescimento ilimitado você não tem como saber se o tamanho atual ocupa mais de 60% do tamanho total.

    O que imagino que possa atender a sua necessidade é criar uma rotina para validar o tamanho atual do arquivo de log, se ele atingir xxMB, daí vc realiza o backup do log.

     

    Att.


    Erickson Ricci SQL Server DBA @ BB Mapfre ericksonricci.wordpress.com MCTS Database Developer 2008, Database Administrator 2008
    segunda-feira, 23 de maio de 2011 00:49
  • Erickson,

    É justamente isso que eu pensei, pois se o tamanho do arquivo é limitado, temos que ter um valor de parâmetro para realizar o backup.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    segunda-feira, 23 de maio de 2011 00:50
    Moderador
  • Ta digamos que  eu inicio o arquivo de log  com 10mb e aumenta de 10mb em 10mb... então o calculo  que se ele passar 6mb = 60% faça um backup automatico... entendeu Erickson ?

    O meu problema é que não sei como pegar essa informação da minha base de dados para realizar essa rotina.
    segunda-feira, 23 de maio de 2011 00:53
  • Andrius,

    Veja se esta consulta pode te ajudar:

    SELECT database_id, file_id, size_on_disk_bytes
    FROM sys.dm_io_virtual_file_stats(@DatabaseId,@FileId)

    Informe o database_id do seu banco de dados e o ID do arquivo de log para poder monitorar o seu tamanho.

     

    Att.


    Erickson Ricci SQL Server DBA @ BB Mapfre ericksonricci.wordpress.com MCTS Database Developer 2008, Database Administrator 2008
    segunda-feira, 23 de maio de 2011 01:04
  • Pois é eu consigo ver o tamanho mas meu problema é como aplicar isso a um JOB. Obrigado Erickson
    segunda-feira, 23 de maio de 2011 01:18
  • Uma possibilidade seria você criar uma procedure ou mesmo um outro job que fica de tempos em tempos executando e verificando o tamanho do log do seu banco de dados. Quando atingir o tamanho limite que você estipular, ele dispara a execução do job que faz o backup do log.

    Ou de repente você pode acompanhar o crescimento do seu arquivo de log e ver de quanto em quanto tempo ele atinge o tamanho limite. Com este tempo você pode configurar o seu job para executar neste intervalo de tempo e daí não precisa mais se preocupar em ficar buscando o tamanho atual do arquivo de log.

     

    Att.


    Erickson Ricci SQL Server DBA @ BB Mapfre ericksonricci.wordpress.com MCTS Database Developer 2008, Database Administrator 2008
    segunda-feira, 23 de maio de 2011 01:45
  • Entendi... esse JOB ficaria sem schedule mas com um STEP ali no comando verificando se o arquivo está maior que os 60% só não sei como criar para ele disparar quando for maior que esses 60%
    segunda-feira, 23 de maio de 2011 01:51
  • Andrius,

     

    Pegando a query do Erickson, ficaria algo mais ou menos assim:

     

    DECLARE @tamanho BIGINT

     

    SET @tamanho = (SELECT size_on_disk_bytes 

    FROM sys.dm_io_virtual_file_stats(1,2))

     

    IF(@tamanho > Seu valor estipulado)

    BEGIN

    REALIZA BACKUP

    END

    ELSE

    BEGIN

    NÃO FAZ NADA

    END


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com
    segunda-feira, 23 de maio de 2011 01:55
    Moderador
  • Andrius,

     

    Pegando a query do Erickson, ficaria algo mais ou menos assim:

     

     

    DECLARE @tamanho BIGINT

     

    SET @tamanho = (SELECT size_on_disk_bytes 

    FROM sys.dm_io_virtual_file_stats(1,2))

     

    IF(@tamanho > Seu valor estipulado)

    BEGIN

     REALIZA BACKUP

    END

    ELSE

    BEGIN

    NÃO FAZ NADA

    END

     


    Oracle OCA11g, MCC 2011! Dicas e novidades: www.fabrizziocaputo.wordpress.com

    Na hora de executar o job, utilize a seguinte procedure de sistema do banco MSDB:

    EXEC msdb..sp_start_job @job_name = ?

     

    Att.


    Erickson Ricci SQL Server DBA @ BB Mapfre ericksonricci.wordpress.com MCTS Database Developer 2008, Database Administrator 2008
    segunda-feira, 23 de maio de 2011 02:04
  • Boa Noite,

    Use os alertas do SQL Server. Foram feitos exatamente para isso. Você pode criar um alerta utilizando contadores do Performance Monitor. Para esse caso, o contador % log used serve. Crie um alerta para que quando esse contador do seu banco específico chegar a 60% um job seja iniciado. O job deve conter o comando de backup

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar segunda-feira, 23 de maio de 2011 02:28
    • Marcado como Resposta Andrius I segunda-feira, 23 de maio de 2011 02:41
    segunda-feira, 23 de maio de 2011 02:28
  • Salvou minha pele.... Muito Obrigado... e obrigado a todos que me ajudaram.
    segunda-feira, 23 de maio de 2011 02:41