Usuário com melhor resposta
Job Backup SQL Server 2005 - Substituir ultimo arquivo criado

Pergunta
-
Preciso configurar um JOB de backup para executar um backup full diariamente, porem como não disponho de muito espaço em disco preciso que o job substitua o ultimo arquivo criado para nao ter que entrar no servidor diariamente e apagar manualmente.
Configurei o JOB que esta executando sem problemas, porem ele não esta substituindo o ultimo arquivo existente, nas configurações do job o seguinte campo foi configurado para: ''Backup set will expire'' estas como o parametro ''after - 1 days'', ou seja, teoricamente ele deveria substituir o ultimo arquivo criado a 1 dia? ou somente vai sobrescrever no disco quando nao houver espaco para alocação?
Preciso que o JOB substitua todos os dias o ultimo backup feito no dia anterior.
Como proceder, alguém pode me ajudar???Obrigado
Respostas
-
Marco, para substituir o arquivo vc tem que setar a opção "init" para apagar o arquivo anterior, caso seu backup seja feito em fita, use a opção "format"
Ex 1.: Armazenamento em Disco - Utilize a opção "init" e a opção "noformat"
Ex 2.: Armazenamento em Fita - Utilize a opção "noinit" e a opção "format"
Se tiver mais alguma dúvida, olha o BOL do SQLServer 2005
http://technet.microsoft.com/pt-BR/library/ms191304(v=sql.90).aspx
- Editado Flávio Augusto Lacerda de FariasMVP quarta-feira, 13 de agosto de 2014 18:42
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quarta-feira, 13 de agosto de 2014 19:01
-
Bom dia Marco,
Sugiro que utilize esse script para criação das suas rotinas de backup: http://ola.hallengren.com/sql-server-backup.html
Essa solução se encaixa na grande maioria dos ambientes e tem excelentes recomendações.
Após a implementação existe um parâmetro dentro do 'job step' chamado @CleanupTime = X, neste você pode determinar em horas qual será o tempo de retenção desse arquivo antes de ser deletado. Se nenhum tempo for especificado, então o backup não será deletado e os arquivos só são eliminados após o BD ter seu backup feito e verificado com sucesso.
Caso deseje prosseguir com sua solução, acredito que você deve também configurar nas propriedades da instância a opção 'Default Backup Media Retention', na aba de 'Database Settings' ou da uma olhada no comando 'INIT' quando o backup é feito via script.
Espero que possa ter ajudado.
Att, Bruno Silva.
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quarta-feira, 13 de agosto de 2014 19:01
Todas as Respostas
-
Bom dia Marco,
Sugiro que utilize esse script para criação das suas rotinas de backup: http://ola.hallengren.com/sql-server-backup.html
Essa solução se encaixa na grande maioria dos ambientes e tem excelentes recomendações.
Após a implementação existe um parâmetro dentro do 'job step' chamado @CleanupTime = X, neste você pode determinar em horas qual será o tempo de retenção desse arquivo antes de ser deletado. Se nenhum tempo for especificado, então o backup não será deletado e os arquivos só são eliminados após o BD ter seu backup feito e verificado com sucesso.
Caso deseje prosseguir com sua solução, acredito que você deve também configurar nas propriedades da instância a opção 'Default Backup Media Retention', na aba de 'Database Settings' ou da uma olhada no comando 'INIT' quando o backup é feito via script.
Espero que possa ter ajudado.
Att, Bruno Silva.
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quarta-feira, 13 de agosto de 2014 19:01
-
Marco, o que você configurou foi que o arquivo de backup expira depois de um dia, não que ele sera deletado após um dia. (Como explicado pelo Bruno)
Você deve ter um processo de deleção que apague os arquivos de backup com mais de um dia de existência, mas sugiro colocar este passo para ser executado apenas se o backup do dia for bem sucedido, caso contrario você pode ficar sem nenhum backup.
E seria melhor você arrumar espaço para mais backups. Seu panorama é de alto risco.
-
Marco, para substituir o arquivo vc tem que setar a opção "init" para apagar o arquivo anterior, caso seu backup seja feito em fita, use a opção "format"
Ex 1.: Armazenamento em Disco - Utilize a opção "init" e a opção "noformat"
Ex 2.: Armazenamento em Fita - Utilize a opção "noinit" e a opção "format"
Se tiver mais alguma dúvida, olha o BOL do SQLServer 2005
http://technet.microsoft.com/pt-BR/library/ms191304(v=sql.90).aspx
- Editado Flávio Augusto Lacerda de FariasMVP quarta-feira, 13 de agosto de 2014 18:42
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator quarta-feira, 13 de agosto de 2014 19:01
-
Olá Bruno.
Obrigado pela ajuda, porem não sou muito expert, consegui resolver utilizando este script aqui.
Vlw!
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'C:\TESTE_BKP\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb','ENGEMAN_TESTE','RM_TESTES') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName WITH INIT
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
-
-
Ola Ceilton.
Sim entendo sua observação, porem temos neste ambiente um politica de backup bem implementada, com backups em discos, LTO, e software de gerenciamento Symantec Backup Exec, a ideia é deixar somente o ultimo arquivo de backup no disco local dos servidores justamente para não copiar dados redundantes, sendo que são copiados 2 vezes ao dia e arquivados por 60 dias.
Obrigado.