none
Apagar Aarquivo de Backup RRS feed

  • Pergunta

  • Bom Dia a todos, minha dúvida é a seguinte, quando a gente configura um backup no SQL Server 2000 utilizando o Database Maintenance Plans, temos a opção de guardar os backup's de alguns dias e apagar automaticamente os backup com data anterior, e isso funciona direitinho, gostaria de saber como fazer isso via script, fiz o script para backup assim:

     

    BACKUP DATABASE BaseDeDados

    TO DISK = 'CAMINHO\BACKUP.BAK'

     

    estou guardando os backup, ou seja estou criando um arquivo com data e hora para cada backup, mas não estou conseguindo apagar os backup's antigos, no caso preciso guardar os backup por 7 dias e ir apagando os .bak mais antigo.

    Desde ja agradeço a atenção e ajuda de todos.

    quarta-feira, 18 de abril de 2007 02:38

Respostas

  •  

     vc. pode usar a xp_cmdshell ' del nome_arquivo'

     

     mais uma ideia, porque vc. nao usa o backup com  a opcao init assim vc. sempre sobreescreve o arquivo, segue um exemplo:

     

    Declare @FileName Varchar(100)
    Select @FileName = 'E:\Backup\Backup_RBMS\Log_Banco_' + Convert(char(02),Getdate(),114) + '.Bkk'
    Backup Log Nome_BancoTo Disk = @FileName   With Init

     

    assim ele gera um arquivo com o backup de log com a hora, no dia seguinte ele sobreescreve o arquivo .

     

     

    Abs;

    quarta-feira, 18 de abril de 2007 10:16

Todas as Respostas

  •  

     vc. pode usar a xp_cmdshell ' del nome_arquivo'

     

     mais uma ideia, porque vc. nao usa o backup com  a opcao init assim vc. sempre sobreescreve o arquivo, segue um exemplo:

     

    Declare @FileName Varchar(100)
    Select @FileName = 'E:\Backup\Backup_RBMS\Log_Banco_' + Convert(char(02),Getdate(),114) + '.Bkk'
    Backup Log Nome_BancoTo Disk = @FileName   With Init

     

    assim ele gera um arquivo com o backup de log com a hora, no dia seguinte ele sobreescreve o arquivo .

     

     

    Abs;

    quarta-feira, 18 de abril de 2007 10:16
  • JM,

     

    Concordo com o Marcelo.

     

    Desta forma, fica mais fácil de administrar o processo de backup e elimina a necessidade de excluir arquivos, o pode se tornar um procedimento demorado dependendo do tamanho do arquivo de backup.

    quarta-feira, 18 de abril de 2007 11:40
    Moderador
  • O problema é que o cliente quer manter o backup de mais de um dia, ficando assim:

    Backup_DataBase_200704010000.bak

    Backup_DataBase_200704020000.bak

    Backup_DataBase_200704030000.bak

    Backup_DataBase_200704040000.bak

    Backup_DataBase_200704050000.bak

    Backup_DataBase_200704060000.bak

    Backup_DataBase_200704070000.bak

    e quando for realizado o backup do dia 08 devo deletar o backup do dia 01 e assim por diante.

    Fazendo o backup pelo DataBase Maintenance Plans isso funciona direitinho, mas como toda a regra de backup ja estava definida e criada em script, gostaria de colocar mais essa regra no meu scrpit, a opção dada de usar a xp_cmdshell é a melhor opção, é a única ou existe outra forma de fazer esse trabalho.

    Novamente agradeço antecipadamente qualquer ajuda ou sugestão.

    quarta-feira, 18 de abril de 2007 12:26
  • JM,

     

    Que eu conheça o SQL Server não possui alguma função ou DBCC para excluir arquivos, logicamente você pode utilizar xp_cmdshell, mas trata-se de uma extended procedure.

     

    Mas vou procurar mais informações!!!

    quarta-feira, 18 de abril de 2007 12:44
    Moderador
  • Por que você ao invés de ficar fazendo backups full todos os dias, não faz 1 backup full por semana, e um Diferencial pro dia?

    Bom isso ja iria reduzir bastante o tempo. E você teria em cada arquivo de backup diferencial todo o histórico do dos dias anteriores.

    No dia que você efetuar o backup semanal zera o diferencial.

     

    Alguns exemplos de sintax:

    Diarios: Backup Database banco to device with Differential,NoInit (Não limpa os anteriores)

    Diarios: Backup Database banco to device with Differential,Init (Limpa os anteriores)

    Semanais: Backup Database banco to device with Init (Limpa o anterior)

     

    Espero ter ajudado.

    sexta-feira, 20 de abril de 2007 19:30
  • vc ja resolvel esta questão, se não poste aqui que passerei o scrip.

    Jair

    sábado, 5 de abril de 2008 13:16
  • Ola Candido,

     

    Notei que vc cita o periodo de 1 semana, portanto ciclo completo semanal.

    Aproveitando a resposta dada anteriormente altere a parte da função Convert que esta trazendo a hora pela função DateName que traz o dia da semana:

     

    Declare @Arquivo Varchar(MAX)
    Set @Arquivo = 'CAMINHO\BACKUP-' + Substring(DateName(weekday, getdate()), 1, 3) + '.bkp'
    Backup Database BaseDeDados To Disk = @Arquivo

     

    Com este modelo os arquivos ficariam com os nomes: BACKUP-MON, BACKUP-TUE, BACKUP-WED, etc...

    Ou seja, na proxima segunda o backupo tera o mesmo nome da segunda anterior.

     

    Um abraço.

    • Sugerido como Resposta mkoseki quinta-feira, 20 de setembro de 2012 13:11
    quarta-feira, 16 de abril de 2008 18:38
  • Marcelo,

    Criatividade é tudo, experiência Tb! Solução perfeita! VALEWWWW

    quinta-feira, 20 de setembro de 2012 13:11