go backsqlschool blogs list

Databases Restore History Report

by Antonios Chatzipavlis

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

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

select 
        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 
                     file_number
                    ,destination_phys_name
                    ,filegroup_name 
                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
Ημερομηνία: 06 August 2016 00:02
Αξιολόγηση: ( 1 )
Κατηγορίες:
Share it:

Αφήστε το σχόλιο σας - Leave your comment

Τα σχόλια έχουν κλείσει.
Επιτρέπονται μόνο τα σχόλια από τα μέλη του SqlSchool.gr.


newsletter subscription

Εάν επιθυμείτε να λαμβάνετε ενημέρωση από εμάς, δώστε μας το e-mail σας.
PASS chapter logo
Official Professional Association for SQL Server (PASS) chapter for Greece
Join to PASS