go backsqlschool blogs list

Database(s) backup history reports

by Antonios Chatzipavlis

Σαν DBA θέλεις να έχεις τα πάντα σε έλεγχο και για αυτό πρέπει αρκετές φορές να κάνεις κάποια πράγματα πριν οι καταστάσεις ξεφύγουν από τον έλεγχο σου.

Από τα πρώτα πράγματα που πρέπει ένας DBA να κάνει είναι έχει μια σωστή στρατηγική για τα backup του, ιδιαίτερα όταν έχεις μεγάλο αριθμό από databases.

Φυσικά θα πρέπει να είναι σε θέση ανά πάσα ώρα να γνωρίζει τι έχει στα χέρια του από backups ώστε όταν έρθει η στιγμή που θα τα χρειαστεί να μην ψάχνει δεξιά και αριστερά.

Αυτό είναι ακόμα επιτακτικότερο όταν τα SQL backups γίνονται με κάποιο άλλο εργαλείο ή σουίτα που δεν είναι κάτω από τον άμεσο έλεγχο του.

Για τους παραπάνω λόγους και κυρίως από προσωπική ανάγκη έφτιαξα κάποια reports τα οποία είναι διαθέσιμα για download και τα οποία μπορείτε αφού τα βάλε σε ένα directory να τα ενσωματώσετε στο SSMS σαν Custom Reports ακολουθώντας τις παρακάτω οδηγίες

Οδηγίες εγκατάστασης

  1. Ανοίγουμε τον SSMS
  2. Επιλέγουμε το instance με στο οποίο θέλουμε
  3. Στον Object explorer κάνουμε expand το server και δεξί κλικ στις Databases και στο popup menu επιλέγουμε Reports > Custom Reports
  4. Στο παράθυρο που θα μας εμφανιστεί επιλέγουμε το directory στο οποίο έχουμε βάλει τα report και επιλέγουμε το All Databases Backup History Report of last 6 weeks.rdl

Για να εγκαταστήσουμε το Database Backup History Report of last 6 weeks.rdl ακολουθούμε την ίδια διαδικασία αλλά αυτή την φορά επιλέγουμε την βάση που μας ενδιαφέρει.

Τα reports

Και τα δύο αυτά reports βασίζονται στο παρακάτω query που δεν κάνει τίποτα περισσότερο από το να ρωτάει τους πίνακες dbo.backupset και dbo.backupmediafamily που υπάρχουν στην msdb και που περιέχουν πληροφορίες για τα backups που έχουν παρθεί τις τελευταίες 6 εβδομάδες για κάθε βάση.

Το query

Αν κάποιος θέλει απλά να χρησιμοποιήσει το query  μπορεί να το κάνει αλλά πιστεύω ότι τα reports είναι αρκετά χρήσιμα καθώς με ένα κλικ μπορείς να δεις τα αποτελέσματα.

SELECT 
        -- database info
          bs.[database_name] AS database_name
        , bs.[recovery_model] AS database_recovery_model
        , bs.[compatibility_level] AS database_compatibility_level
        -- backup device info
                 
        , CASE bs.[type]
                    WHEN 'D' THEN 'FULL'
                    WHEN 'I' THEN 'DIFFERENTIAL'
                    WHEN 'L' THEN 'LOG'
                    WHEN 'F' THEN 'FILE / FILEGROUP'
                    WHEN 'G' THEN 'DIFFERENTAIL FILE'
                    WHEN 'P' THEN 'PARTIAL'
                    WHEN 'Q' THEN 'DIFFERENTIAL PARTIAL'
        END AS backup_type
                , bs.[backup_finish_date] AS backup_finish_date
        , mf.[physical_device_name] AS physical_device_name
        , bs.[user_name] AS backup_operator_username
        , bs.[position] AS position_in_device
                 
          
        -- backup details
        , CAST(ROUND(bs.[backup_size] * 1.0 / ( 1024 * 1024 ), 2) AS decimal(10, 2)) as size_in_mb
        , CAST(ROUND(bs.[compressed_backup_size] * 1.0 / ( 1024 * 1024 ), 2) AS decimal(10, 2)) AS compressed_size_in_mb 
        , DATEDIFF(minute, bs.[backup_start_date], bs.[backup_finish_date]) AS backup_duration_min
        , bs.[is_copy_only] AS is_copy_only
        , bs.[is_force_offline] AS with_norecovery_option 
        , bs.[is_password_protected] AS is_password_protected
        , bs.expiration_date AS backup_expiration_date

FROM    msdb.dbo.backupset AS bs
            INNER JOIN msdb.dbo.backupmediafamily AS mf ON bs.[media_set_id] = mf.[media_set_id]
WHERE    bs.[backup_finish_date] > DATEADD(WEEK, -6, GETDATE()) -- get last 6 weeks
        AND bs.database_name = DB_NAME()
ORDER BY  backup_finish_date DESC

Πως δημιουργήθηκαν τα reports

Μπορείτε να φτιάξετε και τα δικά σας report και να τα ενσωματώσετε στο SSMS. Δεν είναι δύσκολο, το μόνο που χρειάζεται είναι να έχετε λίγες γνώσεις από Reporting Services. Απλά θα πρέπει στο τέλος στο data source να βάλετε σαν (local) ή τελεία (.)  στο όνομα του instance ώστε να μπορείτε να τα χρησιμοποιείται σε όποιο instance θέλετε.

/*antonch*/

Ημερομηνία: 27 April 2015 00:40
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