locked
Restaurar backup de log via RRS feed

  • Pergunta

  • Bom dia.

    Faço backup de full e de log das base do servidor SQL, gostaria de criar um script (T-SQL) para restaurar os backups de log de algumas bases, recebo solicitação para fazer a restauração com o backup mais recente, gostaria saber como faço para criar um scrip que restaure o log mais recente, não tenha que especificar o arquivo por arquivo, hoje para restaurar preciso saber quantos backups de log tenho até o momento da restauração. 

    Existe algum comando que especifique para restaura todos os backups de logs que estão no arquivo de backup?

    quarta-feira, 3 de outubro de 2018 14:20

Respostas

  • RoxTech,

    Vamos lá, vou tentar te ajudar:

    - Para este caso inicialmente você precisará consultar o histórico de backup, veja o exemplo abaixo:

    SELECT  database_name, name,

    backup_start_date,

    datediff(mi, backup_start_date, backup_finish_date) [tempo (min)],

            position, server_name, recovery_model, isnull(logical_device_name, ' ') logical_device_name, device_type,
            type, cast(backup_size/1024/1024 as numeric(15,2)) [Tamanho (MB)], B.is_copy_only
    FROM msdb.dbo.backupset B
          INNER JOIN msdb.dbo.backupmediafamily BF ON B.media_set_id = BF.media_set_id
    where backup_start_date >=  dateadd(hh, -24 ,getdate()  )
      and type in ('D','I')
    and database_name = 'NomeDatabase'
    order by backup_start_date desc

    Coluna device_type 2 = Disk 3 = Diskette (obsolete) 5 = Tape 6 = Pipe (obsolete) 7 = Virtual device (for optional use by third-party backup vendors) Typically, only disk (2) and tape (5) are used.

    - Agora se você quiser também pode obter o histórico de restore:

    Select destination_database_name, restore_date, database_name as Source_database, physical_device_name as Backup_file_used_to_restore, bs.user_name, bs.machine_name from msdb.dbo.restorehistory rh inner join msdb.dbo.backupset bs
    on rh.backup_set_id= bs.backup_set_id

    inner join msdb.dbo.backupmediafamily bmf
    on bs.media_set_id = bmf.media_set_id

    Where Destination_database_name = 'NomeDatabase' ORDER BY [rh].[restore_date] DESC


    Para o seu cenário funcionar o histórico de backup é justamente o que você precisa utilizar, utilize a coluna backup_finish_date para ter como parâmetro quando o backup foi finalizado.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    quinta-feira, 4 de outubro de 2018 12:28
    Moderador