none
Procedimento para restore RRS feed

  • Pergunta

  • Prezados, boa tarde.

    Estou criando uma politica de backup na empresa onde trabalho, estamos utilizando o SQL Server 2008 standart.

    Nesta politica, está sendo gerado uma arquivo .bak por dia contendo alguns backup´s full.

    Minha dúvida é qual seria a melhor maneira de fazer um script que identifica o último backup full dentro e executa o restore?

    Como pretendo automatizar este processo de restore (em um outro servidor), como devo proceder em relação a já existir um database?

    Desde já agradeço a atenção.

    Sandro Rassy
    rassy
    quarta-feira, 15 de julho de 2009 18:36

Respostas

  • Boa Tarde,

    Se um arquivo .BAK possui mais de um backup full você terá que indicar qual backup full do .BAK você quer restaurar. Para listar todos os backups dentro de um arquivo você deve utilizar o RESTORE HEADERONLY e para escolher um backup a ser restaurado, você deve utilizar o parâmetro FILE. Ex:

    RESTORE HEADERONLY FROM DISK = 'ArquivoBak'
    RESTORE DATABASE Banco FROM DISK = 'ArquivoBak' WITH FILE = 2

    Não acho uma boa prática colocar mais de um backup por arquivo. Isso aumenta o risco envolvido e alguns procedimentos. Se tivermos por exemplo um arquivo com 10 backups (supondo que cada backup tenha 5GB), precisaremos de uma área de 50GB para restaurar qualquer um dos 10 backups. O backup sozinho tem 5GB, mas será necessário ter o arquivo todo para extrair um único backup. Caso o arquivo de 50GB se corrompa, os 10 backups podem ficar comprometidos. Se fosse um arquivo por backup, se um arquivo corromper, apenas um backup ficará comprometido.

    Ter vários backups por arquivo funciona mas a medida que suas bases crescerem você terá problemas em manter essa estratégia.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Pivoteando, Despivoteando, Transpondo, Invertendo Colunas e Linhas no SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!629.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 15 de julho de 2009 18:54
    • Marcado como Resposta rassy quarta-feira, 15 de julho de 2009 19:05
    quarta-feira, 15 de julho de 2009 18:54

Todas as Respostas

  • Olá,

    Você pode verificar isso no database MSDB:

    select * from msdb.dbo.backupset
    where database_name= 'seu_db'
    order by backup_finish_date desc
    
    
    
    Ou mesmo você pode padronizar os nomes dos backups como:

    nomeDba_yyyyddmmhhmmss.bak para ficar mais fácil a visualização

    Segue um exemplo:

    	DECLARE @DATABASE varchar(25) = 'seudb'
    	DECLARE @SQL AS VARCHAR(300)
    
    	SET @SQL =	'BACKUP DATABASE ' + @DATABASE + ' TO DISK = ' + CHAR(39) + 
    		'F:\MSSQL\BACKUP\' + @DATABASE + '\' + @DATABASE + '_BACKUP_' + 
    		REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(19), GETDATE(), 120), '-',''), ':',''),' ','_') +
    		'.BAK' + CHAR(39) +
    		' WITH NOFORMAT, NOINIT, SKIP, REWIND, NOUNLOAD'
    
    	EXEC SP_EXECUTESQL @STATEMENT = @SQL
    

    Abraços
    Demétrio Silva
    quarta-feira, 15 de julho de 2009 18:48
  • Boa Tarde,

    Se um arquivo .BAK possui mais de um backup full você terá que indicar qual backup full do .BAK você quer restaurar. Para listar todos os backups dentro de um arquivo você deve utilizar o RESTORE HEADERONLY e para escolher um backup a ser restaurado, você deve utilizar o parâmetro FILE. Ex:

    RESTORE HEADERONLY FROM DISK = 'ArquivoBak'
    RESTORE DATABASE Banco FROM DISK = 'ArquivoBak' WITH FILE = 2

    Não acho uma boa prática colocar mais de um backup por arquivo. Isso aumenta o risco envolvido e alguns procedimentos. Se tivermos por exemplo um arquivo com 10 backups (supondo que cada backup tenha 5GB), precisaremos de uma área de 50GB para restaurar qualquer um dos 10 backups. O backup sozinho tem 5GB, mas será necessário ter o arquivo todo para extrair um único backup. Caso o arquivo de 50GB se corrompa, os 10 backups podem ficar comprometidos. Se fosse um arquivo por backup, se um arquivo corromper, apenas um backup ficará comprometido.

    Ter vários backups por arquivo funciona mas a medida que suas bases crescerem você terá problemas em manter essa estratégia.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Pivoteando, Despivoteando, Transpondo, Invertendo Colunas e Linhas no SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!629.entry


    Classifique as respostas. O seu feedback é imprescindível
    • Sugerido como Resposta Gustavo Maia Aguiar quarta-feira, 15 de julho de 2009 18:54
    • Marcado como Resposta rassy quarta-feira, 15 de julho de 2009 19:05
    quarta-feira, 15 de julho de 2009 18:54
  • Gustavo / Demetrio,

    Obrigado pelas resposta.

    Bem acredito que vou precisar mudar a politica de backup, porque a cada hora estou efetuando um backup full.

    Agradeço pelas respostas.

    Sandro Rassy
    rassy
    quarta-feira, 15 de julho de 2009 19:04