go backarticles

Articles of SQLschool.gr Team

Databases Restore History Report

Antonios Chatzipavlis

Ένας DBA καθημερινά έχει πολλά πράγματα να κάνει και πολλές ερωτήσεις να απαντήσει. Πολλές φορές αυτό που θέλει να κάνει ή να απαντήσει δεν γίνεται με το πάτημα ενός κουμπιού.
Μια ερώτηση που μου τέθηκε χθες ήταν να δω το πότε έχει γίνει restore μια database σε ένα instance.

Η απάντηση εύκολα βγαίνει από το restorehistory table που υπάρχει στην msdb database αλλά πάντα θέλεις να έχεις περισσότερες πληροφορίες που αυτός δεν περιέχει. Έτσι έφτιαξα το παρακάτω query μπορεί να απαντήσει στις ερωτήσεις τους κάθε ένα σχετικά με το πότε έχουν γίνει restores και σε ποιες databases στο συγκεκριμένο instance.

        h.destination_database_name as destination_database_name
,       h.restore_date as date_of_restore
,        b.database_name as source_database_name
,        b.server_name as source_server_name
,        case h.restore_type
            when 'D' then 'Database'
            when 'F' then 'File'
            when 'G' then 'Filegroup'
            when 'I' then 'Differential'
            when 'L' then 'Log'
            when 'V' then 'Verifyonly'
            when 'R' then 'Revert'
            else  h.restore_type
        end as restore_type
,       h.user_name as restored_by_user          
,       h.device_count 
,        b.name as backup_name    
,       b.description as backup_description
,        cast ((select    
                      m.family_sequence_number as device_seqnum
                    ,m.physical_device_name as device_name
                    ,case device_type
                        when 2 then 'DISK'
                        when 5 then 'TAPE'
                        when 7 then 'VIRTUAL'
                        when 105 then 'PERMANENT'
                        else cast (device_type as nvarchar)
                    end as device_type
                from msdb.dbo.backupmediafamily as m
                where m.media_set_id = b.backup_set_id
                for xml raw ('restoredevice'),root('restoredevices')) 
                as xml) as restored_device_info
,        cast ((select 
                from msdb.dbo.restorefile as rf
                    inner join msdb.dbo.restorefilegroup as rg on rf.restore_history_id = rg.restore_history_id
                where rf.restore_history_id=h.restore_history_id
                for xml raw ('restoredfile'),root('restorefiles')) 
                as xml) as restored_files
from msdb.dbo.restorehistory as h
    inner join msdb.dbo.backupset as b on h.backup_set_id = b.backup_set_id
order by restore_date desc

Relative Articles

Leave your comment

Login with your SQLschool.gr account if you want to comment on this article.

PASS chapter logo

The Official PASS Local Group for Greece

1429 33 592 27 39 1308
sql school greece logo
© 2010-2019 All rights reserved